Shell学习15天(函数基本概念)- 08day

(一) 什么是函数

完成特定功能的代码片段(块),在shell中定义函数可以使用代码模块化,便于复用代码。函数必须先定义才能使用

(二) 如何定义函数

方法1:  function 函数名 { 函数要实现的功能代码 }

方法2: 函数名() { 函数要实现的功能代码 }

(三) 函数调用

 3.1    怎么给函数传参    

参数不用先定义,函数括号里面没有形参。脚本调用时候传位置参数,函数调用去获取传递给脚本的参数即可。当然不止这一种方式。代码都是灵活的,想办法让函数获取参数都可。

函数在另外一个脚本的话就在需要调用函数的脚本中执行一下函数所在脚本文件即可。注意是在当前shell执行,即 . 或 source

Shell学习15天(函数基本概念)- 08day

3.2    怎么使用函数返回值  

3.2.1  如果没有return  , 那么 函数的返回值是函数最后一条命令执行后返回的状态码。一个介于 0~255 之间的整数,其中只有 0 表示成功,其它值都表示失败。获取方式是 调用函数后 用 $? 获取。如下面的例子:

Shell学习15天(函数基本概念)- 08day

 

3.2.2  用热return来定义返回值: return 后面不能跟表达式,只能跟一个值。例如不能用 return  let 2*$num  只能用

return  $[2*$num];   另外 return 也只能返回0-255之间的整数。 如果 2*$num 大于255 那么得到的结果也是错误的。获取方式同样也是在调用函数后,用 $? 获取函数返回值。如下面例子:

Shell学习15天(函数基本概念)- 08day

 

3.2.3  那么如何获取一个函数里面的计算结果呢?比如这个例子中我要得到不在0-255范围内的2*$num 的值。别慌,肯定是有办法的啦。继续往下看。通常我们会有两种方式来获取准确的函数返回值。

第一种: 在shell中定义一个全局变量,在函数中把计算结果赋给这个全局变量,调用函数后再去获取这个全局变量的值即可;

比如下面的例子:

Shell学习15天(函数基本概念)- 08day

第二种: 再函数内部使用 echo 或 printf 将结果输出。随便怎么调用获取。直接调用或者通过命令替换或者将命令替换后执行结果赋值给一个变量都可以。

Shell学习15天(函数基本概念)- 08day

 

 

20200219