是否有可能创建一个不受变量扩展影响的heredoc?
e.g。
<input type='text' class='form-control' focus='true'/>
<input type='text' class='form-control' focus='true'/>
<input type='text' class='form-control' focus='true'/>
更新我知道cat <<-EOF > somefile.sh
Do not print current value of $1 instead evaluate it later.
EOF
转义。我的实际heredoc中有很多变量 - 而且它很容易出错而且很繁琐。
答案 0 :(得分:6)
引用分隔符:
cat <<-"EOF" > somefile.sh
Do not print current value of $1 instead evaluate it later.
EOF
这导致:
$ cat somefile.sh
Do not print current value of $1 instead evaluate it later.
here-documents的格式为:
<<[-]word here-document delimiter
不对字执行参数和变量扩展,命令替换,算术扩展或路径名扩展。 如果 引用单词中的任何字符,分隔符是结果 引用删除单词,以及here-document中的行 未扩展。如果单词不加引号,则here-document的所有行都要进行参数扩展,命令 替换和算术扩展,字符序列 \被忽略,\必须用于引用字符\, $,和`。
如果重定向运算符是&lt;&lt; - ,则从输入行和包含的行中删除所有前导制表符 分隔符。这允许shell脚本中的文档 以自然的方式缩进。 [重点补充。]
答案 1 :(得分:0)
在$ sign
之前加上反弹$ VAR=XXX
$ cat << END
> dk
> \$VAR
> END
dk
$VAR