ssh、heredoc、環境変数

ssh、heredoc、環境変数

(重要な場合はRHEL 8.4です。)

スクリプトの5行と7行のコマンドはechoローカルホストで実行されますが、hostname6行と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 次のようになります。

単語の一部が引用されている場合、区切り文字は単語から引用符を削除した結果であり、文書の行はここでは拡張されません。

おすすめ記事