• 函数(数组传参)


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

  • 相关阅读:
    阅读编程书籍的方法(转)
    Java 面向对象概念
    Python 统计文本中单词的个数
    Python 学习笔记(五)杂项
    在CentOS7环境下部署TiDB
    前端学习之路:第三章、来做个天气应用吧(1)
    前端学习之路:第二章、Vue-router和axios
    前端学习之路:第一章、开始使用Vue
    在Docker下搭建Apache+PHP+mysql环境的过程记录
    在基于Windows系统的PHP后端中引入Redis
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/12790347.html
Copyright © 2020-2023  润新知