SSHブロック内でローカル変数にアクセスできません。

SSHブロック内でローカル変数にアクセスできません。
#!/bin/sh
flag="False"
ssh -n  $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"

リモートの場所に接続する前に、フラグはfalseです。リモートの場所でいくつかの操作を実行した後、sshブロック内のフラグ値を変更し、フラグ値をローカル変数flagに返したいと思います。 –

答え1

私はあなたが次のことをしたいと思います。

#!/bin/sh

flag=$(
    ssh -T "$user@$host" <<'END_SCRIPT'
        # some operations on
        # the remote host goes here

        # later...

        if some_condition; then
            echo true
        else
            echo false
        fi
END_SCRIPT
)

これにより、リモートホストがドキュメントで参照されているように提供されたスクリプトが実行され、その出力がローカル変数に割り当てられますflag。私がここに書いた方法は、ビットがsome operationsそうだと仮定しています。いいえ出力を生成せず、リモートスクリプトによって生成された唯一の出力は、2つの条件付きコマンドのいずれかechoから来ます。

変数flagには文字列が割り当てられるか、true結果falseに応じて割り当てられますsome_condition

リモートスクリプト内で値を使用する必要がある場合は、$flagこの文書を引用符なしで使用する必要があります。その後、リモートで発生するシェル拡張を適切にエスケープするように注意する必要があります($これをエスケープして\$)。

関連情報