Erfassen Sie den Exit-Statuscode von SSH

Erfassen Sie den Exit-Statuscode von 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

Ich bekomme RET 0 OUT ist 10

Wie kann ich den korrekten Exit-Statuscode im äußeren Block erhalten? Ich muss den Exit-Code 10 sehen.

Antwort1

Sie müssen den Befehl entweder im Vordergrund ausführen

$ (exit 10)
$ echo $?
10

Oder wenn es im Hintergrund läuft, explizit waitdafür:

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

Oder indem Sie anstelle der Jobnummer die Prozess-ID angeben für wait:

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

verwandte Informationen