1. 程式人生 > >【Shell基礎篇】Shell 變數

【Shell基礎篇】Shell 變數

1.shell變數

注意不能有空格
由字母、下劃線和數字組成shell變數,不能由數字開頭
有效:_var, ersa, my_var
無效:12a, a+a

2.Shell字串

單引號、雙引號
單引號一般用於一條字串原樣輸出,變數無效
雙引號使用較為靈活,可以使用轉義字元,可以有變數

拼接字串
your_name=“roobot”
greeting_1=‘hello, ‘$your_name’ !’
echo $greeting_1 # 輸出hello, roobot !這裡其實是拼接字串,單雙引號效果一樣

greeting_2=‘hello, ${your_name} !’
echo $greeting_2 #輸出:hello, {your_name} !說明單引號不能識別變數,故原樣輸出

獲取字串長度
string=“abcdefg”
echo ${#string}

提取子字串
string=“your name is hugh”
echo ${string:1:4} #輸出our

#查詢子字串
注意使用反引號``
查詢字元i或o的位置,哪個字母先出現就計算哪個,從1開始,不是從0開始。
string=“my name is Evan”
echo expr index "$string" io #輸出9,注意是從1開始。

3.Shell陣列

bash支援一維陣列,不支援多維,並且沒有限定陣列的大小
陣列下標從0開始

定義陣列: 用括號表示陣列,“ ”空格符號分割陣列元素
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)

可以單獨定義陣列的各個分量:
array_name[0]=value0

可以不使用連續的下標,而且下標得範圍沒有限制

讀取陣列
[ ]

v a l u e 1 = {陣列名[下標]} value1= {array_name[0]}

使用@符號可以獲取陣列中的所有元素,例如:
echo ${array_name[@]}

獲取陣列的長度

#取得陣列元素的個數
length=${#array_name[@]}    #或者length=${#array_name[*]}
echo $length         #獲取陣列的長度,這裡是指陣列元素的個數: 4

echo $array_name     #預設輸出第一個陣列元素:value0
length_1=${#array_name[1]}
echo $length_1   #獲取陣列單個元素的長度

4.Shell註釋

#: 每行註釋使用#

多行註釋:
:<<EOF
xx
xxx
xxxx
EOF

EOF也可以使用其他符號
:<<’
…此處省略1w+行

:<<!
…此處省略1w+行
!