這次寫腳本時用到了bash shell數(shù)組,當(dāng)初做法是配置文件里面寫成數(shù)組形式A=(element1 element2 element3 .... element4),然后一個腳本讀取這個配置文件,于是稍微總結(jié)了一下數(shù)組的使用方法: Bash shell中使用數(shù)組變量 , 其賦值/定義有兩種 :
1. name=(value1 ... valuen) 此時下標(biāo)從0開始,也可以這樣做:name=([1]=a [2]=b [0]=c) 操作方式: 1. 數(shù)組長度:${#arrary[@]}
2. 遍歷數(shù)組:for i in ${array[@]} ; do ; echo $i 或者如下: 3. 取某一個元素:array[index],如果單個元素里面包含多個空格,那么保留這多個空格需要"",比如echo "${array[2]}" 4. 使一個字符串變bash shell 數(shù)組,可以放在文件里面,然后source file,但是這個file里面的內(nèi)容的是:array=(value1 value2 ... valuen)這種形式,還有一種最簡單的做法:array=(`cat filename`)(此時filename里面就不是array=這種形式了,而是直接value1 value2 value3...) 或者array=(content) 5. 清除一個數(shù)組,清0, unset arrayname 6. 連接兩個數(shù)組,array=("${array1[@]}" "${array2[@]}"),用""的目的是防止元素本身包含空格,前面已經(jīng)提到過 7. 復(fù)制一個數(shù)組,跟上面連接一樣array=("${array1[@]}") 8. 數(shù)組添加元素,原理也跟上面一樣array=("${array1[@]}" "xx") 9. 提取數(shù)組的元素,${array[@]:3:2} 從第三個位置開始,取兩個元素。如果是針對一個元素提取(相當(dāng)于substring)${array[index]:start:len}
貌似bash shell中沒有多維數(shù)組,那么該怎么實現(xiàn)呢?我自己想了一個比較笨的方法,這個方法也得對數(shù)據(jù)的組織形式有要去:
for i in "${a[@]}" ; do 其實我們有時候完全可以這樣做:構(gòu)造成這樣:a=(1 2 3 4 5 6 7 8 9),然后操作的時候利用第i行j列的元素等于i*len+j,len是數(shù)組的第二維度大小,這樣做有時候更簡單,但是就必須得控制一下邊界了,比如3*3的數(shù)組,你可能初始化只給出8個元素。 |
|