我有以下脚本
WSO2_SCRIPT="JAVA_HOME=$JAVA_HOME /opt/autopilot/wso2is/bin/wso2server.sh"
WSO2_LOG="/var/log/autopilot/wso2is/autopilot-wso2is-initd.log"
${WSO2_SCRIPT} start >> ${WSO2_LOG} 2>&1 || echo failed
JAVA_HOME=$JAVA_HOME /opt/autopilot/wso2is/bin/wso2server.sh start >> /var/log/autopilot/wso2is/autopilot-wso2is-initd.log 2>&1 || echo failedagain
代码的第三行导致失败,因为我已经“失败”回显?
然而,第四行是成功的,我没有得到“失败的回应”。
第3行和第4行应该产生完全相同的结果。唯一的区别是我在第3行使用变量,在第4行显式。
为什么使用变量会导致失败?
答案 0 :(得分:0)
当扩展变量没有引号时,它们会进行单词拆分和路径名扩展,但不 shell语法解析。
这意味着您可以将以下内容放在变量中:
*.txt
等全球这也意味着您不能在变量中添加以下任何内容:
&
if
和[[ .. ]]
如果你想将上述任何一个作为变量传递,你应该使用一个函数并改为参考函数。如果您不关心安全性和良好实践,您还可以使用eval
将文本字符串评估为shell代码。