Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》

基本的函数定义

把一些重复调用的命令写进一个函数里,下次直接调用函数名,这样的既方便修改,又可以让思路清晰

function 函数名(){

当调用这个函数时候执行的命令......

}

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第1张图片

这个是一个基础的函数定义,当然你不加function也是可以的

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第2张图片


调用函数

当定义完函数,要调用函数才能去使用,当调用一次就执行一次,调用n次就执行n次,调用的位置也是随意的

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第3张图片

只用写个函数名称就可以对整个函数体的调用

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第4张图片


局部|全局变量

不管你在哪里定义函数只要是变量名前面没加 local 那就是全局变量,可以在定义完变量之后的任意地方去调用

前面如果加了local,那只能在当前函数或者某个区块里去使用,也就是局部变量

前提是必须调用一次函数,才能让全局变量生效,你在哪里调用就能在后面就能去使用在函数里定义的变量了

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第5张图片 

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第6张图片

可以看到只输出了text1因为他不是局部变量,只要调用一次函数让他生效就行了

而text2是局部变量,如果在a函数里用,那是可以没有任何问题的,但是出了函数就失效了


函数位置变量

函数也有位置变量,和脚本的位置变量还是有点区别的,我用下面的图片告诉你

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第7张图片

可能你在好奇a函数后面这些数是什么啊  ,运行一下你就知道了

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第8张图片

看到这些你或许一定明白了,那些数放在函数后面数原来还可以当作位置变量调用,但是为什么后三个什么都没有呢,因为我在执行脚本时候什么都没加呀,那里是脚本的位置变量

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第9张图片

现在就有了,下面这个简单的案例值得你去思考一下

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第10张图片

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第11张图片


 return

当在函数里写到return 会停止,不会再去执行函数后面的命令,并且可以去返回一个值0-256

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第12张图片

或者使用return的返回值去判断

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第13张图片

Linux:shell脚本:基础使用(8)《函数&局部|全局变量&函数传入位置变量&return》_第14张图片

这里的 $? 判断是不是 1 或者2 并不是执行错误了,只不过是return的返回值

我们使用$? 判断上一个命令是否正确的时候一般是0因为c语言的main函数返回的一般都是0

而在这里我们想让返回值是多少都行,并不是规定对了就是0    而是一般执行到最后程序最后返回的0   $? 只是去接收上一个命令的返回值的

你可能感兴趣的:(linux,运维,shell脚本)