1、申明數組
例一:
a=(111 222) #一對括表示是數組,數組元素用“空格“符號分割開。
echo ${a[0]} #數組下標從0開始
echo $a #數組也是指針形似,數組名稱相當於一個指針,指向第一個數組元素
輸出:
111
111
例二:
a=([0]=111 [1]=222)
例三:
a[0]=111
a[1]=222
2、數組的控制檯輸入
例一:
read a[0] #輸入222回車
read a[1] #輸入333回車
echo ${#a[@]}
輸出:2
3、數組元素的刪除
例一:
a=(111 222)
unset a[1] #刪除a[1]元素
echo ${#a[@]}
輸出:1
例二:
a=(111 222 333)
unset a #刪除a數組
echo ${#a[@]}
輸出:0
4、取數組的元素個數
規則:${#數組變量[@]}或${#數組變量[*]}
例一:
echo ${#a[@]} #對於shell腳本傳參數,$@表示所有的參數,$#表示參數的個數,不難理解,數組也是這樣
輸出:2
5、取數組索引列表
規則:${!數組變量[@]}或${!數組變量[*]}
含義:把數組變量所有的索引列出,各索引值之間用空格符分開
例一:
filelist=(/etc/passwd /etc/issue /etc/sysconfig/syslog)
for index in ${!filelist[@]}
do
echo "index $index:${filelist[$index]}"
done
輸出:
index 0:/etc/passwd
index 1:/etc/issue
index 2:/etc/sysconfig/syslog
6、子串提取
規則:${數組變量[@]:startindex:length}或${#數組變量[*]:startindex:length}
例一:
a=(111 222 333 444 555)
echo ${a[@]:0:3} #在數組中可以用:n進行數組的範圍分片,顯示一個範圍的數值
7、子串替換
a=(111 222 333 444 555)
例一:第一個匹配到的,會被替換
echo ${a[@]/1/6}
輸出:
611 222 333 444 555
例二:所有匹配到的,會被替換
echo ${a[@]//1/6}
輸出:
666 222 333 444 555
例三:沒有指定替換子串,則刪除匹配到的子符
echo ${a[@]//1/}
輸出:
222 333 444 555
例四:替換字符串前端子串
echo ${a[*]/#1/6}
611 222 333 444 555
例五:替換字符串後端子串
echo ${a[*]/%1/6}
輸出:
116 222 333 444 555
小技巧:
1.生成30個#字符
seq -s '#' 30 | sed -e 's/[0-9]*//g'