我有这个多行字符串(包括引号):
abc'asdf"
$(dont-execute-this)
foo"bar"''
如何在Bash中使用Heredoc将其分配给变量?
我需要保留换行符。
我不想转义字符串中的字符,这很烦人...
"EOF"
变量中的“#” (如果通过调用eval $VAR
)将导致脚本的所有其余部分都被注释,因为在这里$ VAR将被视为一行; 为了能够#
在多行脚本中使用bash 注释,请在eval call:
eval“ $ VAR”`中也将双引号引起来。
eval
此方法时遇到了问题,但是由于它是某些程序包的一部分,因此没有跟踪它,该程序包eval
的一些变量在其配置文件中定义。错误消息为:/usr/lib/network/network: eval: line 153: syntax error: unexpected end of file
。我只是切换到另一个解决方案。
'EOF'
,并使用` in the content: if the second line has
cd`命令转义了换行符,然后返回:“ .sh:X行:cd:命令未找到 ”; 但是如果我双引号"EOF"
;然后bash变量${A}
不会保留为字符串(它们会被扩展);但随后,换行符被保留下来-而且,我没有运行一个命令一个问题cd
在第二行(和两个“EOF”和“EOF”似乎也很好地一起玩eval
,运行一组存储在命令字符串变量)。干杯!