Shell|Shell 向函数传数组参数和返回数组
1. 向函数传递数组
如果将数组变量作为函数的参数,函数只会取数组变量的第一个值
testArray(){
echo "函数入参为:$@"
}myarray=(1 2 3 4)
echo "原始数据为:${myarray[*]}"
testArray $myarray
输出为:
文章图片
解决办法
- 将数组变量的值分解成单个的值,然后将这些值作为函数的参数使用。
- 在函数内部,将所有的参数重新组合成一个新的变量
testArray(){
echo "函数入参为:$@"
local newarray
newarray=($(echo "$@"))
echo "函数新的入参为:${newarray[*]}"
}myarray=(1 2 3 4)
echo "原始数据为:${myarray[*]}"
testArray ${myarray[*]}
输出
文章图片
2. 从函数返回数组
用$arg1变量将数组传给函数arraydblr
arraydblr函数将该数组重组到新的数组变量中
生成该输出数组变量的一个副本
对数据元素进行遍历,将数组元素翻倍,并将结果存入局部变量newarray中
函数arraydblr 使用echo语句来输出每个数组的元素的值
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)
echo "原始输入数组myarray为: ${myarray[*]}"
arg1=$(echo ${myarray[*]})
echo "新组成的输入数组arg1为: ${arg1[*]}"
result=($(arraydblr $arg1))
echo "函数返回数组为: ${result[*]}"
【Shell|Shell 向函数传数组参数和返回数组】
文章图片
推荐阅读
- Shell-Bash变量与运算符
- 跌跌撞撞奔向你|跌跌撞撞奔向你 第四章(你补英语,我补物理)
- 奔向你的城市
- 精神,带我走向人生的天堂!
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 下雪了,飞去你的城市拥抱你|下雪了,飞去你的城市拥抱你 | 有个直男向我表白了
- 最喜6.8.9