我使用cat用脚本shell写入文件。
cat <<EOF >/home/test.txt
set $value1 $value2;
EOF
我的文件只包含此字符串“set;”但我需要找到“set $ value1 $ value2;”。我猜cat认为“$ value1”是一个shell变量,但它只是一个我需要写入文件的字符串。
答案 0 :(得分:7)
在EOF周围使用引号:
cat <<"EOF" >/home/test.txt
set $value1 $value2;
EOF
来自man bash
的此处文档部分:
here-documents的格式为:
<<[-]word here-document delimiter
如果引用了单词中的任何字符,则分隔符为 单词引用删除的结果,以及here-文档中的行 没有扩大。如果单词不加引号,则here-文档的所有行 受到参数扩展,命令替换和 算术扩展。