私はこのようなことをしたい:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
何か案は?
私はこのようなことをしたい:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
何か案は?
回答:
cat <<EOF > test
My name is $NAME
EOF
あるいは
cat <<==end > test
My name is $NAME
==end
私のために働いた。
あなたが取るときのように見える==end
に'
変数が代用されません。
ああ、ここではmanページにあります(3.6.6を見てください):
ヒアドキュメントの形式は次のとおりです。
<<[-]word here-document delimiter
wordに対してパラメーター展開、コマンド置換、算術展開、またはパス名展開は実行されません。word内の文字が引用されている場合、 区切り文字はwordの引用削除の結果であり、ヒアドキュメントの行は展開されません。wordが引用符で囲まれていない場合、ヒアドキュメントのすべての行は、パラメーター展開、コマンド置換、および算術展開の対象となります。[...]
cat << "==end" > test
)を使用することもできますが、ハードクォートは実際に置換を防ぎます。