关于linux:在bash脚本中使用flags

use of flags in bash script

Linux中的脚本从以下声明开始:

#!/bin/bash

如果我错了,请纠正我:这可能说明要使用哪个外壳。

我也看过一些剧本说:

#!/bin/bash -ex

旗子的用途是什么-例如


1
2
3
4
5
6
#!/bin/bash -ex

<=>

#!/bin/bash
set -e -x

手册页(http://ss64.com/bash/set.html):

1
2
3
4
5
6
7
-e  Exit immediately if a simple command exits with a non-zero status, unless
   the command that fails is part of an until or  while loop, part of an
   if statement, part of a && or || list, or if the command's return status
   is being inverted using !.  -o errexit

-x  Print a trace of simple commands and their arguments
   after they are expanded and before they are executed. -o xtrace

更新:

顺便说一句,可以在不修改脚本的情况下设置开关。

例如,我们有脚本t.sh

1
2
3
4
5
#!/bin/bash

echo"before false"
false
echo"after false"

想追踪这个脚本:bash -x t.sh

output:

1
2
3
4
5
 + echo 'before false'
 before false
 + false
 + echo 'after false'
 after false

例如,我们希望跟踪脚本并在某些命令失败时停止(在我们的示例中,它将由命令false完成):bash -ex t.sh

output:

1
2
3
+ echo 'before false'
before false
+ false

这些记录在手册页的SHELL BUILTIN COMMANDS部分的set下:

  • 当管道(或简单管线)返回错误时,-e将导致bash退出。

  • -x将大小写bash,以便在执行命令之前打印命令。


1
-e

在出现任何错误时退出脚本

1
-x

是调试模式

check bash-x命令在bash脚本中set-e是什么意思?