shell脚本中 set -ex

刚刚学会了一个很实用的shell命令set -ex,在这里分享一下。

set -e

先说说set -e,这个参数的含义是,当命令发生错误的时候,停止脚本的执行。

通常来说,我们会习惯于使用&&来实现这样的功能,比如:

echo 1 && rm non-existent-file && echo 2

但是,写成一行呢,可读性有点差,分成多行的话,也得注意换行符和&&号,我就有过好几次忘了加这俩东西,还是挺麻烦的是吧。

更麻烦的是,&&连接的命令之间不能写注释,也就是说,下面这个示例是不能用的:

echo 1 
  && rm non-existent-file  
  && echo 2

运行之后会是这个德行:

rm: non-existent-file: No such file or directory
rm:  #: No such file or directory
rm: which: No such file or directory
rm: will: No such file or directory
rm: fail: No such file or directory
./test1.sh: line 5: syntax error near unexpected token `&&'
./test1.sh: line 5: `  && echo 2'

现在,就可以写成下面这样了:

#!/bin/bash

set -e
echo 1
rm non-existent-file 
echo 2

猜猜最后输出里面会不会把2打印出来?

set -x

说完了-e,继续说说-x。-x参数的作用,是把将要运行的命令用一个+标记之后显示出来。

扫描二维码关注公众号,回复: 14322929 查看本文章

还是拿上面这个脚本举个例子,这次加上-x:

#!/bin/bash

set -ex
echo 1
rm non-existent-file 
echo 2

然后它的输出就变成了:

+ echo 1
+ rm non-existent-file
rm: non-existent-file: No such file or directory

注意第一行和第三行前面那个+,这就是-x参数的作用。

写在最后!!!

需要注意,这条命令需要放到整个shell脚本的开头,才会起作用。毕竟稍微想想就知道,这是俩开关,不论放在中间还是结尾,都不会起到预期的作用。

猜你喜欢

转载自blog.csdn.net/cljdsc/article/details/111906237