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

Cho*_*per 19 linux bash shell-script

我想做这样的事情:

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

$ cat test
My name is John
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

rus*_*ush 27

cat <<EOF > test
My name is $NAME
EOF
Run Code Online (Sandbox Code Playgroud)

甚至

cat <<==end > test
My name is $NAME
==end
Run Code Online (Sandbox Code Playgroud)

为我工作。

当你像看起来==end'变量不能代替。

啊,这是在手册页中(看 3.6.6):

here-document 的格式为:

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

不会对word执行参数扩展、命令替换、算术扩展或路径名扩展。如果word中的任何字符被引用,则 分隔符是word上引用去除的结果,并且here-document中的行没有被扩展。如果word 没有被引用,here-document 的所有行都会进行参数扩展、命令替换和算术扩展。[...]