点击返回 自学Linux命令行与Shell脚本之路html
16.2-函数中使用变量
1. 向函数传递参数
- 函数能够使用标准参数环境变量来表示命令行传递给函数的参数。例如,
函数名在变量$0中定义,函数命令行的其余参数使用变量$1和$2等定义。
专用变量$#能够用来肯定传递给函数的参数数目。
- 在脚本中指定函数时,必须在函数所在命令行提供参数值。func1 $value1 10
- 因为函数为本身的参数值使用专用的参数环境变量,因此函数没法从脚本命令行直接访问脚本参数值。

以上含义:函数addem首先检查传递给它的参数数目。程序员
- 若是没有任何参数,或者参数数目超过两个,那么返回值为-1。
- 若是只有一个参数,那么这个参数与本身相加做为结果。
- 若是有两个参数,那么两个参数相加做为结果。
2. 在函数中处理变量
变量做用域是shell脚本程序员遇到的常见问题。做用域是变量的可见区域。函数内定义的变量与普通变量有不一样的做用域,前者能被脚本外部定义的变量所覆盖。shell
函数使用两种类型的变量: 函数
2.1 全局变量
全局变量是在shell脚本中到处有效的变量。一样,若是在函数内部定义了全局变量,那么脚本的主代码也能够获取该变量的值。
默认状况下,脚本中定义的变量都是全局变量。在函数外部定义的变量,在函数内部仍能正常访问。命令行

变量temp已经在函数内部使用,而又在函数外部赋值,因此生成的结果会出人意料。全局变量保存最后一次运算结果的值。3d
2.2 局部变量
- 函数内部使用的变量能够称为局部变量。这只须要在变量声明前加上关键字:local temp。
- 也能够给局部变量赋值语句前加上local关键字:local temp=$[ $value +5 ]。
- 关键字local确保变量仅在函数内部使用。若是脚本在函数外部有同名变量,那么shell将能区分开这两个变量。能够很容易地将函数变量与脚本变量区分开来,而只共享须要的变量。

......htm