ssh から終了ステータス コードをキャプチャする

ssh から終了ステータス コードをキャプチャする
#!/bin/bash
RET=0
export RET
{
ssh -q -t  user@host <<EOF
echo "hello there "
exit 10
EOF
RET=$?
echo "Out is" $RET
} &
echo "RET is $RET"
################## End

RET 0 OUTは10です

外側のブロックで正しい終了ステータス コードを取得するにはどうすればよいでしょうか。終了コード 10 を確認する必要があります。

答え1

コマンドをフォアグラウンドで実行する必要がある

$ (exit 10)
$ echo $?
10

または、バックグラウンドで実行される場合は、明示的waitに次のようにします。

$ (sleep 3; exit 10) &
$ wait %%                      # %% refers to the current (last) job
$ echo $?
10

または、ジョブ番号の代わりにプロセス ID を指定しますwait

$ (sleep 3; exit 10) & pid=$!
$ wait $pid                    # $! holds the PID of the last background process
$ echo PID $pid exited with code $?

関連情報