shell脚本之——数组在函数中传参并计算数组的和以及乘积
一、向函数传数组参数
如果将数组作为函数的参数,函数只会取数组变量的第一个值
1、格式
#!/bin/bash #数组在函数中传参 test() { echo "函数接收到的参数列表为:$@" newarr=($*) echo "新数组的值为:${newarr[@]}" } ##########main######### arr=(10 20 30 40 50 60) echo "原始数组的值为:${arr[@]}" test $arr
2、输出结果
3、如何改变才能将数组正常在函数中传参呢?
可以将数组拆分成列表传参到函数中,然后在函数中重新组成一个新的数组
3.1 格式
#!/bin/bash #数组在函数中传参 test() { echo "函数接收到的参数列表为:$@" newarr=($*) echo "新数组的值为:${newarr[@]}" } ##########main######### arr=(10 20 30 40 50 60) echo "原始数组的值为:${arr[@]}" test ${arr[*]}
3.2 输出结果
二、从函数返回数组
1、实例操作一:使用函数输出数组所有元素的累加值
1.1 格式
#!/bin/bash #数组在函数中传参 test() { echo "函数接收到的参数列表为:$@" newarr=($*) sum=0 for i in ${newarr[*]} do sum=$[$sum + $i] done echo "数组所有元素的累加值为:$sum" } ##########main######### arr=(10 20 30 40 50 60) echo "原始数组的值为:${arr[@]}" test ${arr[*]}
1.2 输出结果
2、实例操作二:通过函数将数组中的所有元素值*2,并再以新数组形式输出
2.1 格式
#!/bin/bash #从函数返回数组,并将数组中元素值*2,再以新数组形式输出 test () { newarr=(`echo $@`) length=${#newarr[@]} for ((i=0; i<$length; i++)) do newarr[$i]=$[${newarr[$i]} * 2] done echo ${newarr[@]} } #########main############# array=(10 20 30 40 50 60) echo "原始数组的值为:${array[@]}" result=(`test ${array[@]}`) echo "新数组的值为:${result[@]}"
2.2 实例操作
三、总结
1、数组在函数中传参时,如果使用数组直接调用函数,则函数只会取数组变量的第一个值
2、如果想要函数取数组变量的所有值的话,则需要在传参时,先将数组转化为列表形式,将其全部传到函数中,再在函数中重新定义一个新的数组
将本人在工作学习中的一些知识记录并分享