set -u
假如有未定义的变量,应该报错,并且终止脚本继续运行。![](https://img.haomeiwen.com/i20499206/334ebabc8a9d9409.png)
set -e
在脚本执行中,有任何命令的返回值是非0的情况,则正在运行的脚本则会退出
设置-e之前
执行结果![](https://img.haomeiwen.com/i20499206/ed2a94bf6a96d587.png)
设置e之后
解决方法是在脚本中设置set -e
![](https://img.haomeiwen.com/i20499206/306bc2e6929774a0.png)
但是对于含有管道的命令无效,因为其后面又管道,该脚本会继续执行
![](https://img.haomeiwen.com/i20499206/2cbca8cfa93d0dd6.png)
解决办法就是set -o pipefail,需要和set -e 配合使用,如果设置,管道中的所有命令都成功退出,整条命令的返回值才是0,否在返回非0;
设置set -o pipefail后,此时脚本就会终止运行
![](https://img.haomeiwen.com/i20499206/b8b756828ffa8ff3.png)
网友评论