• 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. echo -n "Adding 10 and 15: " 
    15. value=$(addem 10 15
    16. echo $value 
    17. echo -n "Let's try adding just one number: " 
    18. value=$(addem 10
    19. echo $value 
    20. echo -n "Now try adding no numbers: " 
    21. value=$(addem) 
    22. echo $value 
    23. echo -n "Finally, try adding three numbers: " 
    24. value=$(addem 10 15 20
    25. echo $value 

    运行脚本

    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 


    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. if [ $# -eq 2 ] 
    7. then 
    8.  value=$(badfunc1) 
    9.  echo "The result is $value" 
    10. else 
    11.  echo "Usage: badtest1 a b" 
    12. fi 

    运行脚本

    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 


    尽管函数使用了$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. if [ $# -eq 2
    7. then 
    8.  value=$(func7 $1 $2
    9.  echo "The result is $value" 
    10. else 
    11.  echo "Usage: badtest1 a b"
    12. fi 

    运行脚本

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


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

  • 相关阅读:
    基于SpringBoot的CSGO赛事管理系统
    jMetalPy: 用元启发法进行多目标优化的Python框架
    ChatGPT AIGC总结Excel中Vlookup,lookup,xlookup的区别
    初步认识泛型
    Docker技术概论(3):Docker 中的基本概念
    C# 图像灰化处理方法及速度对比
    CI/CD——Jenkins自动构建maven项目
    汽车标定技术(四)--问题分析:多周期测量时上位机显示异常
    SPARK中的wholeStageCodegen全代码生成--以aggregate代码生成为例说起(8)
    07节-51单片机-矩阵键盘
  • 原文地址:https://blog.csdn.net/mmmmm168m/article/details/134280145