zoukankan      html  css  js  c++  java
  • 自学Linux Shell16.2-函数中使用变量

    点击返回 自学Linux命令行与Shell脚本之路

    16.2-函数中使用变量

    1. 向函数传递参数

    • 函数可以使用标准参数环境变量来表示命令行传递给函数的参数。例如,
           函数名在变量$0中定义,函数命令行的其他参数使用变量$1和$2等定义。
           专用变量$#可以用来确定传递给函数的参数数目。
    • 在脚本中指定函数时,必须在函数所在命令行提供参数值。func1 $value1 10
    • 由于函数为自己的参数值使用专用的参数环境变量,所以函数无法从脚本命令行直接访问脚本参数值。

     以上含义:函数addem首先检查传递给它的参数数目。

    • 如果没有任何参数,或者参数数目超过两个,那么返回值为-1。
    • 如果只有一个参数,那么这个参数与自己相加作为结果。
    • 如果有两个参数,那么两个参数相加作为结果。

    2. 在函数中处理变量

    变量作用域是shell脚本程序员遇到的常见问题。作用域是变量的可见区域。函数内定义的变量与普通变量有不同的作用域,前者能被脚本外部定义的变量所覆盖。

    函数使用两种类型的变量:  

    • 全局变量
    • 局部变量

    2.1 全局变量

    全局变量是在shell脚本中处处有效的变量。同样,如果在函数内部定义了全局变量,那么脚本的主代码也可以获取该变量的值。
    默认情况下,脚本中定义的变量都是全局变量。在函数外部定义的变量,在函数内部仍能正常访问。

     变量temp已经在函数内部使用,而又在函数外部赋值,所以生成的结果会出人意料。全局变量保存最后一次运算结果的值。

    2.2 局部变量

    • 函数内部使用的变量可以称为局部变量。这只需要在变量声明前加上关键字:local temp。
    • 也可以给局部变量赋值语句前加上local关键字:local temp=$[ $value +5 ]。
    • 关键字local确保变量仅在函数内部使用。如果脚本在函数外部有同名变量,那么shell将能区分开这两个变量。可以很容易地将函数变量与脚本变量区分开来,而只共享需要的变量。

     

    ......

  • 相关阅读:
    Redis 扛 Mysq 并发方案小记
    CURL 访问 HTTPS 的坑 [后记]
    PHP CURL HTTPS Error: "SSL certificate problem: unable to get local issuer certificate"
    PHP 使用 cURL HTTPS 协议证书认证问题
    HTTPS 学习笔记 (1)
    Windows CMD 仿 Mac Terminal open 命令 打开指定目录资源管理器
    Win10 Hyper-V 配置
    Windows10 下精简和配置 MySQL 5.6
    Win10 + Nginx 1.10 + PHP 7 + Redis 配置方法
    sublime text 配置 builder [build system]
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9261476.html
Copyright © 2011-2022 走看看