自学Linux Shell16.2-函数中使用变量
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将能区分开这两个变量。可以很容易地将函数变量与脚本变量区分开来,而只共享需要的变量。
......
作者:CARLOS_CHIANG
出处:http://www.cnblogs.com/yaoyaojcy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
posted on 2018-07-04 07:01 CARLOS_KONG 阅读(559) 评论(0) 编辑 收藏 举报