猫不在文件中写特殊变量

Hob*_*ire 2 bash shell cat

我用cat用脚本shell写入文件.

 cat <<EOF >/home/test.txt
 set $value1 $value2;
 EOF
Run Code Online (Sandbox Code Playgroud)

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

dog*_*ane 7

在EOF周围使用引号:

cat <<"EOF" >/home/test.txt
set $value1 $value2;
EOF
Run Code Online (Sandbox Code Playgroud)

以下文档部分man bash:

here-documents的格式是:

   <<[-]word
           here-document
   delimiter
Run Code Online (Sandbox Code Playgroud)

如果引用单词中的任何字符,则分隔符是单词上的引号删除的结果,并且不会展开here-文档中的行.如果word不加引号,则here-document的所有行都要进行参数扩展,命令替换和算术扩展.