猫不在文件中写特殊变量

时间:2013-09-05 12:46:43

标签: bash shell cat

我使用cat用脚本shell写入文件。

 cat <<EOF >/home/test.txt
 set $value1 $value2;
 EOF

我的文件只包含此字符串“set;”但我需要找到“set $ value1 $ value2;”。我猜cat认为“$ value1”是一个shell变量,但它只是一个我需要写入文件的字符串。

1 个答案:

答案 0 :(得分:7)

在EOF周围使用引号:

cat <<"EOF" >/home/test.txt
set $value1 $value2;
EOF

来自man bash此处文档部分:

  

here-documents的格式为:

   <<[-]word
           here-document
   delimiter
     

如果引用了单词中的任何字符,则分隔符为   单词引用删除的结果,以及here-文档中的行   没有扩大。如果单词不加引号,则here-文档的所有行   受到参数扩展,命令替换和   算术扩展。