ここでの以前の回答に対する後期の結果として、おそらくすべてではなく一部の変数を補間する必要がある状況に陥ります。バックスラッシュを使用してドル記号とバックティックをエスケープすることで、これを解決できます。または、静的テキストを変数に入れることができます。
Name='Rich Ba$tard'
dough='$$$dollars$$$'
cat <<____HERE
$Name, you can win a lot of $dough this week!
Notice that \`backticks' need escaping if you want
literal text, not `pwd`, just like in variables like
\$HOME (current value: $HOME)
____HERE
デモ:https : //ideone.com/rMF2XA
-引用メカニズムのいずれかのことに注意してください\____HERE
または"____HERE"
または'____HERE'
-すべての変数の展開を無効にし、リテラルテキストの一部にヒアドキュメントをオンにします。
一般的なタスクは、ローカル変数とスクリプトを組み合わせることです。スクリプトは、別のシェル、プログラミング言語、またはリモートホストで評価する必要があります。
local=$(uname)
ssh -t remote <<:
echo "$local is the value from the host which ran the ssh command"
# Prevent here doc from expanding locally; remote won't see backslash
remote=\$(uname)
# Same here
echo "\$remote is the value from the host we ssh:ed to"
:
''
)、しかしではない(それが中であるかのように区切りターン拡張を引用""
)。ただし、 Perlでは直感は正しく、一重引用符で囲まれたヘレドキュメントは一重引用符で囲まれたかのように動作し、二重引用符で囲まれた識別子は二重引用符で囲まれたかのように動作し、逆引用符の付いた識別子はバッククォートのように動作します!参照:perlop:<< EOF