shell 向函式傳遞陣列和從函式返回陣列的一個細節問題
阿新 • • 發佈:2019-02-19
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=$(echo ${myarray[*]})
返回的則是1 2 3 4單個的輸出值;函式的返回同理,返回的是單個的數值,接受的時候加上(),組成陣列