#!/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 $?