十三、Shell數組應用實踐 (一)數組介紹 為什麼會產生數組 通常在開發Shell腳本時,我們定義變數採用的形式為a=1;b=2;c=3,可如果有多個變數呢?這時再一個一個定義很費勁,並且要是有多個不確定的變數內容,也難以進行變數定義,此外,快速讀取不同變數的值也是一件很痛苦的事情,於是數組就誕生 ...
十三、Shell數組應用實踐
(一)數組介紹
為什麼會產生數組
通常在開發Shell腳本時,我們定義變數採用的形式為a=1;b=2;c=3,可如果有多個變數呢?這時再一個一個定義很費勁,並且要是有多個不確定的變數內容,也難以進行變數定義,此外,快速讀取不同變數的值也是一件很痛苦的事情,於是數組就誕生了,它就是為瞭解決上述問題而來的。
什麼是Shell數組
如果讀者有過其他語言的編程經歷,那麼想必會熟悉數組的概念。簡單地說,Shell的數組就是把有限個元素(變數或字元內容)用一個名字命名,然後用編號對它們進行區分的元素集合。這個名字就稱為數組名,用於區分不同內容的編號就稱為數組下標。組成數組的各個元素(變數)稱為數組的元素,有時也稱為下標變數。
有了Shell數組後,就可以用相同名字引用一系列變數及變數值,並通過數字(索引)來識別使用它們。在許多場合,使用數組可以縮短和簡化程式開發。
(二)數組的定義
方法1:推薦
array=(one two three four)
方法2:
array=([0]=one [1]=two [2]=three [3]=four)
方法3:
[root@web01 ~]# array[0]=one
[root@web01 ~]# array[1]=two
[root@web01 ~]# array[2]=three
[root@web01 ~]# array[3]=four
[root@web01 ~]# echo ${array[@]}
one two three four
方法4:命令的結果放到數組裡,推薦。
array=(`ls /server/scripts`)
(三)、操作數組元素
讀取數組內容:*****
[root@web01 ~]# array=( 1 2 3 4 5)
[root@web01 ~]# echo ${array[0]}
1
[root@web01 ~]# echo ${array[1]}
2
[root@web01 ~]# echo ${array[2]}
3
[root@web01 ~]# echo ${array[3]}
4
[root@web01 ~]# echo ${array[4]}
5
[root@web01 ~]# echo ${array[5]}
[root@web01 ~]# echo ${array[*]}
1 2 3 4 5
[root@web01 ~]# echo ${array[@]}
1 2 3 4 5
[root@web01 ~]# echo ${#array[@]}
5
[root@web01 ~]# echo ${#array[*]}
5
給數組增加內容:
[root@web01 ~]# array[5]=oldboy
[root@web01 ~]# echo ${#array[*]}
6
[root@web01 ~]# echo ${array[*]}
1 2 3 4 5 oldboy
刪除數組元素:
[root@web01 ~]# unset array[1]
[root@web01 ~]# echo ${array[*]}
1 3 4 oldboy
[root@web01 ~]# unset array[0]
[root@web01 ~]# echo ${array[*]}
3 4 oldboy
數組能不能替換:
使用for迴圈列印數組元素
array=(1 2 3 4 5)
for n in ${array[*]}
do
echo $n
done
echo =====================
#i為數組下標
for ((i=0;i<${#array[*]};i++))
do
echo ${array[i]}
done
array=([1]=one [2]=two [3]=three)
array[0]=a;array[1]=b;array[2]=c
array=($(命令))
或
array=(`命令`)