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

【shell 向函数传递数组和从函数返回数组的一个细节问题】向函数传递的参数是$arg1,我们知道不能向函数传递一个数组,而应该是遍历的数组的值,所以在arg1赋值这里,不能写arg1=(${echo ${myarray[*]})),这样相当于arg1是一个数组了,而arg1=$(echo ${myarray[*]})返回的则是1 2 3 4单个的输出值;函数的返回同理,返回的是单个的数值,接受的时候加上(),组成数组

    推荐阅读