我们使用以下脚本作为EC2实例的用户数据。我不明白什么是-ex
选项用于?
#!/bin/bash -ex
yum update -y
yum groupinstall -y "Web Server" "MySQL Database" "PHP Support"
service httpd start
chkconfig httpd on
答案 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
与内置集合一起使用的所有单字符选项(请参阅The Set Builtin)可以在调用shell时用作选项
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将给出详细的输出和 如果部分脚本失败,也会立即中止您的脚本。