转义bashvariables

我有点卡住了。 我在脚本的顶部拖放了一个variables,然后我创build了一个文件作为脚本的一部分:

app="testing" cat <<EOF >/etc/init.d/test #!/bin/bash args="--emperor $APPCONF/test/$APP.ini" EOF 

它似乎没有工作,但似乎在$应用程序variables。 我必须对这个variables做些什么来显示它的值,在我创build的文件里面“testing”?

Solutions Collecting From Web of "转义bashvariables"

使用一致的情况。 变量名称区分大小写。

假设你正在做这个正确的方法。 你想要将数据存储在一个数组中:

 args=( --emperor "${appconf}/test/${app}.ini" ) 

然后将其转换为用于嵌入的字符串:

 printf -v args_str '%q ' "${args[@]}"` 

…并在您的heredoc中使用该字符串:

 #!/bin/bash args=( $args_str ) EOF 

……超出这个范围,脚本内部的任何内容都会想要将其扩展为一个数组:

 run_something "${args[@]}" 

有关基本原理和细节,请参阅BashFAQ#50 。

除了使用一致的大小写( $app$APP不同)之外,您可能希望将变量名称括在括号内 – 如果在变量值之间使用空格,则可能会遇到问题,否则就是一种好习惯。 例如:

 args="--emperor ${APPCONF}/test/${APP}.ini" 

这样, $APPCONF也不会与${APP}CONF混淆。 我希望这有帮助!

我不确定要理解你的问题。 我想你想结束一个文件

 /etc/init.d/test 

包含文字:

 #!/bin/bash args="--emperor $APPCONF/test/testing.ini" 

如果是的话,你的脚本应该是:

 app="testing" cat <<EOF >/etc/init.d/test #!/bin/bash args="--emperor \$APPCONF/test/$app.ini" EOF