如何在 bash 中将变量传递给 HEREDOC?

如何在 bash 中将变量传递给 HEREDOC?

我想做这样的事:

$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end

$ cat test
My name is John

有任何想法吗?

答案1

cat <<EOF > test
My name is $NAME
EOF

甚至

cat <<==end > test
My name is $NAME
==end

对我有用。

看起来当你接受==end变量时'并没有替代。

此处有文件手册中有一段内容说:

here-documents 的格式为:

      <<[-]word
              here-document
      delimiter

没有执行任何参数扩展、命令替换、算术扩展或路径名扩展单词. 如果任何字符单词被引用, 分隔符是 word 上删除引号的结果,并且此处文档中的行未展开。如果单词不加引号的话,此处文档的所有行都会经过参数扩展、命令替换和算术扩展。[...]

相关内容