• shell_77.Linux在函数中使用变量


    在函数中使用变量
    向函数传递参数

    func1 $value1 10


    然后函数可以用位置变量来获取参数值。来看一个使用此方法向函数传递参数的例子:

    1. $ cat test6 
    2. #!/bin/bash 
    3. # passing parameters to a function 
    4. function addem { 
    5.     if [ $# -eq 0 ] || [ $# -gt 2 ] 
    6.     then 
    7.         echo -1 
    8.     elif [ $# -eq 1 ] 
    9.     then 
    10.         echo $[ $1 + $1 ] 
    11.     else 
    12.         echo $[ $1 + $2 ] 
    13.  fi 
    14. } 
    15. echo -n "Adding 10 and 15: " 
    16. value=$(addem 10 15) 
    17. echo $value 
    18. echo -n "Let's try adding just one number: " 
    19. value=$(addem 10) 
    20. echo $value 
    21. echo -n "Now try adding no numbers: " 
    22. value=$(addem) 
    23. echo $value 
    24. echo -n "Finally, try adding three numbers: " 
    25. value=$(addem 10 15 20) 
    26. echo $value 
    27. $ 

    运行脚本

    1. $ ./test6
    2. Adding 10 and 15: 25 
    3. Let''s try adding just one number: 20 
    4. Now try adding no numbers: -1 
    5. Finally, try adding three numbers: -1 
    6. $ 


    text6 脚本中的 addem 函数首先会检查脚本传给它的参数数目。如果没有参数或者参数多于两个,那么 addem 会返回-1。
    如果只有一个参数,那么 addem 会将参数与自身相加。如果有两个参数,则 addem 会将二者相加。

    由于函数使用位置变量访问函数参数,因此无法直接获取脚本的命令行参数。下面的例子无
    法成功运行:

    1. $ cat badtest1 
    2. #!/bin/bash 
    3. # trying to access script parameters inside a function 
    4. function badfunc1 { 
    5.  echo $[ $1 * $2 ] 
    6. } 
    7. if [ $# -eq 2 ] 
    8. then 
    9.  value=$(badfunc1) 
    10.  echo "The result is $value" 
    11. else 
    12.  echo "Usage: badtest1 a b" 
    13. fi 
    14. $ 

    运行脚本

    1. $ ./badtest1 
    2. Usage: badtest1 a b 
    3. $ ./badtest1 10 15 
    4. ./badtest1: * : syntax error: operand expected (error token is "* 
    5. ") 
    6. The result is 
    7. $ 


    尽管函数使用了$1 变量和$2 变量,但它们和脚本主体中的$1 变量和$2 变量不是一回事。
    要在函数中使用脚本的命令行参数,必须在调用函数时手动将其传入:

    1. $ cat test7 
    2. #!/bin/bash 
    3. # trying to access script parameters inside a function 
    4. function func7 { 
    5.  echo $[ $1 * $2 ] 
    6. } 
    7. if [ $# -eq 2 ] 
    8. then 
    9.  value=$(func7 $1 $2) 
    10.  echo "The result is $value" 
    11. else 
    12.  echo "Usage: badtest1 a b"
    13. fi 
    14. $ 

    运行脚本

    1. $ ./test7 
    2. Usage: badtest1 a b 
    3. $ ./test7 10 15 
    4. The result is 150 
    5. $ 


    在将$1 变量和$2 变量传给函数后,它们就能跟其他变量一样,可供函数使用了。

  • 相关阅读:
    Linux系统编程系列之线程
    U盘复制错误0x80071ac3如何解决?
    window系统如何管理多版本node
    Java剑指Offer旋转数组的最小数字
    02、数据卷(Data Volumes)以及dockefile详解
    Visual Studio里的编译、生成与调试
    接口防止重复提交,订单避免重复下单
    Redis(六) 内存策略
    nacos适配达梦、瀚高、人大金仓数据库及部分源码探究
    SQL的substring_index()用法——MySQL字符串截取
  • 原文地址:https://blog.csdn.net/mmmmm168m/article/details/134280145