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