1 [root@localhost array]# cat function_array.sh 2 #!/bin/bash 3 4 num=(2 3 4) 5 array() { 6 echo "all parameters: $*" 7 local newarray=(`echo $*`) #其中的()为另外手动添加,满足数组赋值方式 8 local i 9 for ((i=0;i<$#;i++)) 10 do 11 outarray[$i]=$(( ${newarray[$i]} * 5 )) 12 done 13 echo "${outarray[*]}" 14 } 15 16 array ${num[*]} 17 [root@localhost array]# sh function_array.sh 18 all parameters: 2 3 4 19 10 15 20 20 [root@localhost array]#
1 [root@localhost array]# cat function_array2.sh 2 #!/bin/bash 3 4 num=(2 3 4) 5 array() { 6 echo "all parameters: $*" 7 echo 8 local newarray=(`echo $*`) 9 local i 10 for ((i=0;i<$#;i++)) 11 do 12 outarray[$i]=$(( ${newarray[$i]} * 5 )) 13 done 14 echo "${outarray[*]}" 15 } 16 17 #result=`array ${num[*]}` 18 #echo ${result[*]} 19 echo `array ${num[*]}` 20 [root@localhost array]# sh function_array2.sh 21 all parameters: 2 3 4 10 15 20 #输出格式不同,是由于``是在子shell中执行,然后将结果再输出导致。 22 [root@localhost array]#
第二版:
1 [root@localhost array]# cat function_array.sh 2 #!/bin/bash 3 4 num=(2 3 4) 5 num2=(5 4 3) 6 array() { 7 echo "all parameters: $*" 8 local newarray=(`echo $*`) 9 local i 10 for ((i=0;i<$#;i++)) 11 do 12 outarray[$i]=$(( ${newarray[$i]} * 5 )) 13 done 14 echo "${outarray[*]}" 15 } 16 17 array ${num[*]} 18 array ${num2[*]} 19 [root@localhost array]# sh function_array.sh 20 all parameters: 2 3 4 21 10 15 20 22 all parameters: 5 4 3 23 25 20 15 24 [root@localhost array]#
第三版:
1 [root@localhost array]# cat function_array.sh 2 #!/bin/bash 3 4 num=(2 3 4) 5 num2=(5 4 3) 6 array() { 7 echo "all parameters: $*" 8 local newarray=(`echo $*`) 9 local i 10 for ((i=0;i<$#;i++)) 11 do 12 newarray[$i]=$(( ${newarray[$i]} * 5 )) #运算后将新值重新赋给原有变量,覆盖原有变量值,无需重新定义新数组(思想) 13 done 14 echo "${newarray[*]}" 15 } 16 17 array ${num[*]} 18 array ${num2[*]} 19 [root@localhost array]# sh function_array.sh 20 all parameters: 2 3 4 21 10 15 20 22 all parameters: 5 4 3 23 25 20 15
数组赋值给函数array,在函数中定义新的数组,并将数组的运算结果赋值给令一个数组,通过函数将数组的值给输出。