• 函数(数组传参)


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

  • 相关阅读:
    Asp.net web api部署在某些服务器上老是404
    log4net记录日志到数据库自定义字段
    PIE-Basic 投影变换
    PIE-Basic 波段合成
    PIE-Basic 空间量测
    PIE-Basic 存储格式转换
    PIE-Basic 位深转换
    PIE-Basic 数据拉伸与显示
    PIE-Basic数据信息查看
    PIE-Basic 影像格式转换
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/12790347.html
Copyright © 2020-2023  润新知