use*_*364 17 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
Run Code Online (Sandbox Code Playgroud)
sjs*_*sam 13
这只是另一种说法:
#!/bin/bash
set -ex # Added line
yum update -y
yum groupinstall -y "Web Server" "MySQL Database" "PHP Support"
service httpd start
chkconfig httpd on
Run Code Online (Sandbox Code Playgroud)
[bash手册]说:
与set builtin一起使用的所有单字符选项(请参阅Set Builtin)可以在调用shell时用作选项
[设置参考] 说:
set允许您更改shell选项的值并设置位置参数,或显示shell变量的名称和值.
-X
在命令,大小写命令,选择命令,命令及其参数或相关单词列表在扩展之后和执行之前,打印一系列简单命令.扩展PS4变量的值,并在命令及其扩展参数之前打印结果值.
-e
如果管道(请参阅管道)(可能包含单个简单命令(请参阅简单命令)),列表(请参阅列表)或复合命令(请参阅复合命令)返回非零状态,请立即退出.
Mer*_*rry 10
一个很好的帖子回答了这个问题:"在你的bash shebang上添加大头钉|#!/ bin/bash -ex" https://scottlinux.com/2014/08/05/add-tack-ex-on-your-庆典-家当- binbash-EX /
Bash脚本可以在shebang上使用各种选项(#!/ bin/bash).更常见的是:'#!/ bin/bash -ex'.
-e如果命令以非零状态退出,则立即退出.-x在执行时打印命令及其参数.
简而言之,将-ex添加到#!/ bin/bash将提供详细输出,并且如果脚本的一部分失败,也会立即中止脚本.