(重要な場合はRHEL 8.4です。)
スクリプトの5行と7行のコマンドはecho
ローカルホストで実行されますが、hostname
6行と8行のコマンドは予想どおりにリモートホストで実行されます。
5行と7行がlocalhostで実行されるのはなぜですか?さらに重要なのは、リモートホストで実行するにはどうすればよいですか?
編集:私欲しくない到着着信変わりやすい。リモートサーバーで変数を個別に定義して使用したいです。
1 #!/bin/bash
2 export foo=bar
3 ssh -q ${1} <<EOF
4 export foo=blarge
5 echo $foo
6 hostname
7 echo $foo
8 hostname
9 EOF
10 hostname
ベストアンサー1
引用したEOFを使用してください。
$ ssh -q localhost <<'EOF'
export foo=blarge
echo $foo
EOF
blarge
使用しているシェルを指定していませんが、たとえばman bash
次のようになります。
単語の一部が引用されている場合、区切り文字は単語から引用符を削除した結果であり、文書の行はここでは拡張されません。