web-dev-qa-db-ja.com

変数をbashでHEREDOCに渡す方法は?

私はこのようなことをしたいです:

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

$ cat test
My name is John

何か案は?

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

あるいは

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

私のために働いた。

あなたが取るときのように見えます==end の中に '変数は代用しません。

ああ、これは man page にあります(3.6.6を参照):

ヒアドキュメントの形式は次のとおりです。

      <<[-]Word
              here-document
      delimiter

Wordに対して、パラメーター展開、コマンド置換、算術展開、またはパス名展開は実行されません。 Wordのいずれかの文字が引用符で囲まれている場合、区切り文字は、 Wordでの引用​​の削除、およびヒアドキュメントの行は展開されません。 Wordが引用符で囲まれていない場合、ヒアドキュメントのすべての行は、パラメータ展開、コマンド置換、および算術展開の対象になります。 [...]

24
rush