在Shell脚本中,往往会遇到一些判断类型为某个值不符合预期值的时候就退出主脚本/当前脚本/当前函数,那么Exit与return的用法与区别是什么呢?
下面先使用Exit举个简单例子,脚本内容如下
#!/bin/bash if [[ "$1" == "1" ]];then echo '退出' exit 0 echo 'exit' fi echo 'END'
第一种执行方法:
使用bash解析器进行调用,结果如下
然后第二种执行方法:
此时可以看出同样的脚本,同样的解析器,不同的执行方法会得到不一样的结果
接下来是第三种方法:
此时,第三种执行方法效果与第一种一致
然后是第四种执行方法:
然后 得到的结果与第二张一致。
最后再使用不同的解析器调用看看
那么结果证明:
- 一,三,五的执行结果一致
- 二,四的执行结果一致
通过对比不同的执行方法与结果,我们可以得出一个结论:
当使用下面三种执行方法时:
此时的脚本内容会作为一条一条的指令直接应用到当前终端,
而使用解析器或者使用 ./ 的时候则是为shell脚本运行一个进程,
当遇到exit的时候应用的是这一个进程,反之则是应用到当前控制终端,也就是相当于在终端执行exit命令,
此时会注销当前登陆终端的用户,如果当前终端是采用一个用户进行登陆的话就会断开连接,
如果是多层登陆的话则会回退到下一层的用户终端
来源:https://www.cnblogs.com/liuyi778/p/12300380.html