スレーブで実行されるスクリプトから値を返します。

スレーブで実行されるスクリプトから値を返します。

私のローカルコンピュータにスクリプトがあります。スクリプトでSSHを介してスレーブへの接続を確立し、スレーブでビルドスクリプトを実行します。

ssh $user@$slave_ip bash $dest_root/$dest_dir/slave_run

親スクリプト変数のslave_runスクリプトから返された終了コードをキャプチャする方法はありますか?

答え1

あなたのコマンド(二重引用符を追加):

ssh "$user@$slave_ip" bash "$dest_root/$dest_dir/slave_run"

$?終了コードは、コマンドの実行後にキャプチャされます。

例:

$ ssh someserver sh -c 'false'
$ echo $?
1

キャプチャするには:

$ ssh someserver somecommand
$ code=$?

または、サーバーからコマンドを受け取り、終了コードを出力してそれを文字列としてキャプチャします。

$ code=$( ssh server sh -c "somecommand; echo \$?" )

あなたの場合:

$ code=$( ssh "$user@$slave_ip" sh -c "$dest_root/$dest_dir/slave_run; echo \$?" )

コマンドが二重引用符内にあり、クライアント側のシェルではなくサーバー側のシェルで評価されたいので、$ofをエスケープする必要があります。$?$?

答え2

終了コードを確認するには、特殊変数 "$?"を確認する必要があります。この変数は、最後のコマンド実行の終了コードを示します。

ssh $user@$slave_ip 'bash $dest_root/$dest_dir/slave_run ; echo $?'

関連情報