我用cat用脚本shell写入文件.
cat <<EOF >/home/test.txt
set $value1 $value2;
EOF
Run Code Online (Sandbox Code Playgroud)
我的文件只包含这个字符串"set;" 但我需要找到"set $ value1 $ value2;".我猜cat认为"$ value1"是一个shell变量,但它只是一个我需要写入文件的字符串.
在EOF周围使用引号:
cat <<"EOF" >/home/test.txt
set $value1 $value2;
EOF
Run Code Online (Sandbox Code Playgroud)
从以下文档部分man bash
:
here-documents的格式是:
Run Code Online (Sandbox Code Playgroud)<<[-]word here-document delimiter
如果引用单词中的任何字符,则分隔符是单词上的引号删除的结果,并且不会展开here-文档中的行.如果word不加引号,则here-document的所有行都要进行参数扩展,命令替换和算术扩展.