Shell第四章——函数

命令序列按照格式写在一起        核心:财富使用的命令序列

使用函数可以避免代码重复,函数可以将大的工程分割成若干小的功能模块,提高代码的可读性

第一种写法

第二种写法

 

return:表示退出函数并返回一个退出值,用$?可以显示这个值,return一般会写在函数最后一行

退出值是有范围的:0—255,超过255会除以256再取余

shell脚本中return的返回值默认就是0,或者非0的返回码,在shell脚本中意义不大,主要是作为判断return

作用在函数内部,在shell中return一般就是判断函数的执行情况。

exit:作用于整个脚本,立即终止,没有返回码,脚本会立刻停止运行

exit 0 :表示程序正常结束              exit 1 :程序是异常退出的

$?:在shell脚本中就是exit 0

函数传参:在shell中,调用函数可以传递参数,位置变量来传参,我们在函数内部可以定义位置变量。

在花括号内就是在函数内。在花括号外就是在函数外

例:求两数之和 

Shell第四章——函数_第1张图片

函数变量的作用范围:函数在shell中仅在当前的shell环境中有效

在函数中定义的变量默认地全局变量

Shell第四章——函数_第2张图片

 

 加了local就变成了函数的內部变量,只能在函数的内部使用,外部如果重新传值它的值就会发生变化

Shell第四章——函数_第3张图片

在函数中不加local就是让a,b作为全局变量

要让函数内部的变量作用于整个脚本,那就不用加local

如果要在外面二次进行传参,那么函数内部的值就要加上local让他变成一个内部变量

例:

Shell第四章——函数_第4张图片

 调用函数第一次传进去的值是9 ( echo "inside"  $i )

调用的是整个函数中写的方法

local  i      

i=8

echo  "inside  $i"         使得第二和输出的数为8

经过i++自增后  最后输出的为10

递归函数:函数调用自己本身的函数, 

例:用函数递归的方式,写一个阶乘,要求阶乘数可以自定义

Shell第四章——函数_第5张图片

 以求6的阶乘为例,6被调用到函数的命令序列当中,先判断是否为1,6不为1执行else,6在函数内部执行减1(temp)并且和6再相乘,并且函数重复执行,直到最后值为1

 local  result=$(abc  $temp)     意思为 abc调用  local  temp=$(($1-1))  中得到的数,得到的数进入函数的命令序列      并且每次减一都调用一次循环执行直到最后得到的值为1不再进行判断,最后把累乘的结果打印出来

例:函数调用自己,打印出自定义目录下所有的目录和文件   /opt目录下

Shell第四章——函数_第6张图片

 

你可能感兴趣的:(linux,运维,服务器)