函数(数组传参)

 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,在函数中定义新的数组,并将数组的运算结果赋值给令一个数组,通过函数将数组的值给输出。

原文地址:https://www.cnblogs.com/xiaofeng666/p/12790347.html