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