1. 程式人生 > 實用技巧 >shell(8):迴圈

shell(8):迴圈

  1. 陣列定義法1:
     
    arr=(1 2 3 4 5) # 注意是用空格分開,不是逗號!!
    
    陣列定義法2:
     
    array
     
    array[0]="a"
     
    array[1]="b"
     
    array[2]="c"
     
     
     
    獲取陣列的length(陣列中有幾個元素):
     
    ${#array[@]}
     
     
     
    遍歷(For迴圈法):
     
    for var in ${arr[@]};
     
    do
     
    echo $var
     
    done
     
     
    遍歷(帶陣列下標):
     
    for i in "${!arr[@]}";
     
    do
     
    printf "%s\t%s\n" "$i" "${arr[$i]}
    " done 遍歷(While迴圈法): i=0 while [ $i -lt ${#array[@]} ] do echo ${ array[$i] } let i++ done 向函式傳遞陣列: 由於Shell對陣列的支援並不號,所以這是一個比較麻煩的問題。 翻看了很多StackOverFlow的帖子,除了全域性變數外,無完美解法。 這裡提供一個變通的思路,我們可以在呼叫函式前,將陣列轉化為字串。 在函式中,讀取字串,並且分為陣列,達到目的。 fun() { local _arr=(`echo $1 | cut -d "
    " --output-delimiter=" " -f 1-`) local _n_arr=${#_arr[@]} for((i=0;i<$_n_arr;i++)); do elem=${_arr[$i]} echo "$i : $elem" done; } array=(a b c) fun "$(echo ${array[@]})"