linux shell 中數組的定義和for循環遍歷的方法


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}的區別


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM