私のローカルコンピュータにスクリプトがあります。スクリプトで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 $?'