bash中使用了什么-ex选项#!/ bin / bash -ex mean

时间:2016-07-13 05:01:10

标签: linux bash shell scripting

我们使用以下脚本作为EC2实例的用户数据。我不明白什么是-ex选项用于?

#!/bin/bash -ex

yum update -y
yum groupinstall -y "Web Server" "MySQL Database" "PHP Support"
service httpd start
chkconfig httpd on

2 个答案:

答案 0 :(得分:10)

这只是另一种说法:

#!/bin/bash 

set -ex # Added line

yum update -y
yum groupinstall -y "Web Server" "MySQL Database" "PHP Support"
service httpd start
chkconfig httpd on

[ bash manual ]说:

  

与内置集合一起使用的所有单字符选项(请参阅The   Set Builtin)可以在调用shell时用作选项

[ set reference ]说:

  

set允许您更改shell选项的值并设置   位置参数,或显示shell的名称和值   变量

     

-x

     

打印一系列简单命令,用于命令,案例命令,选择   命令,命令及其参数的算术或   关联的单词列表在扩展之后和它们之前   执行。 PS4变量的值被扩展并得到结果   在命令及其扩展参数之前打印值。

     

-e

     

如果是管道(请参阅管道),可以立即退出,该管道可能包含a   单个简单命令(参见简单命令),列表(参见列表)或a   复合命令(请参阅复合命令)返回非零状态。

答案 1 :(得分:8)

一个很好的帖子回答了这个问题:"在你的bash shebang上添加了特色x #!/ bin / bash -ex" https://scottlinux.com/2014/08/05/add-tack-e-x-on-your-bash-shebang-binbash-ex/

  

Bash脚本可以在shebang上使用各种选项(#!/ bin / bash)。一个   更常见的是:'#!/ bin / bash -ex'。

     

-e如果命令以非零状态退出,则立即退出。   -x在执行时打印命令及其参数。

     

简而言之,将-ex添加到#!/ bin / bash将给出详细的输出和   如果部分脚本失败,也会立即中止您的脚本。