ローカル変数は ssh ブロック内ではアクセスできません

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

フラグは、リモート ロケーションに接続する前は false に等しくなります。リモート ロケーションで何らかの操作を実行した後、ssh ブロック内のフラグの値を変更し、フラグの値をローカル変数フラグに返したいだけです。 –

答え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割り当てられます。truefalsesome_condition

リモート スクリプト内で値を使用する必要がある場合は$flag、引用符で囲まれていない here-document を使用する必要があります。その場合、リモートで実行する必要があるシェル展開を適切にエスケープするように注意する必要があります ($これらの を としてエスケープする\$)。

関連情報