#!/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
この文書を引用符なしで使用する必要があります。その後、リモートで発生するシェル拡張を適切にエスケープするように注意する必要があります($
これをエスケープして\$
)。