1. 程式人生 > >shell 向函式傳遞陣列和從函式返回陣列的一個細節問題

shell 向函式傳遞陣列和從函式返回陣列的一個細節問題

function arraydblr {
    local origarray
    local newarray
    local elements
    local i
    origarray=($(echo "$@"))
    newarray=($(echo "$@"))
    elements=$[ $# - 1 ]
    for (( i = 0; i <= $elements; i++ ))
    {
    newarray[$i]=$[ ${origarray[$i]} * 2 ]
    }
    echo ${newarray[*]}
}
myarray=(1
2 3 4 5) echo "The original array is: ${myarray[*]}" arg1=$(echo ${myarray[*]}) result=($(arraydblr $arg1)) echo "The new array is: ${result[*]}" $ $ ./test12 The original array is: 1 2 3 4 5 The new array is: 2 4 6 8 10

向函式傳遞的引數是$arg1,我們知道不能向函式傳遞一個數組,而應該是遍歷的陣列的值,所以在arg1賦值這裡,不能寫arg1=(${echo ${myarray[*]}))

,這樣相當於arg1是一個數組了,而arg1=$(echo ${myarray[*]})返回的則是1 2 3 4單個的輸出值;函式的返回同理,返回的是單個的數值,接受的時候加上(),組成陣列