linux 中定義一個數據的語法為:
variable=(arg1 arg2 arg3 ....)
中間用空格分開。數組的下標從0開始。
1 獲取下標為n的元素:
variable[n]
而且不存在數組下標溢出的情況,如果 n>= 數組的長度,那么為空,不會報錯。
2 獲取數組長度
${#variable[@]}
或者
${#variable[*]}
那么如何用for遍歷呢?一共有兩種方式:
for i in ${variable[@]}; do
# do something....
done
for i in $(seq 0 ${#variable[@]}); do
e=${variable[$i]}
# do something....
done
以上兩種方法 把 @ 換成 * 也行。
但上面
for i in $(seq 0 ${#variable[@]}); do
這個是大於等於0,小於等於variable長度的;也就是說遍歷次數要比variable長度多一次;可以通過修正i值來使其相等:
i=`expr $i + 1`
附:shell數組常用操作
一、聲明數組
1)array[key]=value # array[0]=one,array[1]=two
2)declare -a array # array被當作數組名
3)array=( value1 value2 value3 ... )
4)array=( [1]=one [2]=two [3]=three ... )
5)array="one two three" # echo ${array[0|@|*]},把array變量當作數組來處理,但數組元素只有字符串本身
二、訪問數組
1)${array[key]} # ${array[1]}
三、刪除數組
1)unset array[1] # 刪除數組中第一個元素
2)unset array # 刪除整個數組
四、計算數組的長度
1)${#array}
2)${#array[0]} #同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的區別