私はこのコードを持っています:
HOSTS="host1 host2"
For hostname in ${HOSTS} ;
do ssh -tt ${USERNAME}@${hostname} << EOF
HOSTSN="test"
echo ${HOSTSN}
exit
EOF
Done
変数がHOSTSN
空です。理由を教えてもらえますか?
答え1
HOSTSNは実行時に評価されているため空です。
do ssh -tt ${USERNAME}@${hostname} << EOF
実装する。これを使用してecho \${HOSTSN}
問題を解決してください。
この例を考えてみましょう。ここに「foo」というファイルが作成されます。ファイル作成時に内容は実行されません。だから$NAME
何も設定されていません。
$ cat >foo <<EOF
NAME=Steve
echo Hello ${NAME}
EOF
$
$ cat foo
Hello
$
文字を導入すると、\
ファイルの作成時に変数は評価されません。
$ cat >foo <<EOF
NAME=Steve
echo Hello \${NAME}
EOF
$
$ cat foo
Hello Steve
$