變量命名:
- 命名只能使用英文字母,數字和下划線,首個字符不能以數字開頭。
- 中間不能有空格,可以使用下划線(_)。
- 不能使用標點符號。
- 不能使用bash里的關鍵字(可用help命令查看保留關鍵字)。
無效的變量命名:
?var=123
user*name=runoob
賦值變量:
1:
直接賦值
name="lily"
2:
利用語句賦值
for i in `ls /boot`;do echo $i ; done
#將/boot目錄下的文件名循環賦值給i並打印,可以用$(ls /boot)代替`ls /boot`
3:
間接賦值read -p
[root@test ~]# read -p "your name?" name1 name2
your name?666 888
[root@test ~]# echo $name1 $name2
666 888
使用變量
利用$var或者${var} 調用變量,加{}可以幫助解釋器識別變量的邊界。
如$varlog會找varlog的變量,${var}log就沒問題。
只讀變量
var=abc readonly abc var=ab -bash: i: readonly variable #報錯,只讀變量的值不能被改變和刪除
刪除變量
unset var #變量前不加$符
***************************************
變量類型-字符串
1:
單引號''
name='my name is $i' echo $name my name is $i
eg:echo $name 會顯示 my name is $i,單引號內的變量不會被讀取
單引號字符串的限制:
單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
單引號字串中不能出現單引號(對單引號使用轉義符后也不行)。
2:
雙引號""
name="my name is $i"
雙引號的優點:
雙引號里可以有變量
雙引號里可以出現轉義字符
3:
獲取字符段長度 ${#var}
name=sunny
echo ${#name}
5 #返回字符段長度5
4:
提取字符串,從第n個字符開始提取m個字符${var:n:m}
name="my name is sunny"
echo ${name:11:5} #從第11個字符起提取5個字符。
sunny
**********************************************************************
變量類型-數組
1:
定義數組
數組元素的下標由0開始編號。獲取數組中的元素要利用下標,下標可以是整數或算術表達式,其值應大於或等於0。
array={v1 v2 v3 v4}
或者
array=(
v1
v2
v3
)
2:
讀取數組,注意下標由0開始編號
${數組名[下標]}
echo ${array[0]}
v1
獲取數組的所有元素
echo ${array[@]}
# 取得數組元素的個數
length=${#array_name[@]}
# 取得數組單個元素的長度
length=${#array_name[@]}
