Ich möchte den Exit-Status des als Argument übergebenen Befehls erhalten (an mein SH-Skript mit der Bezeichnung a.sh
).Shell-Skript: falscher Exit-Status des ausgeführten Befehls
Ich habe versucht:
#!/bin/sh
CMD="[email protected]"
echo "arg passed CMD: $CMD"
($CMD) >/dev/null 2>&1
res=$?
echo "exit status: $res"
CMD="echo aaa | grep -q zzz"
echo "in script CMD: $CMD"
($CMD) >/dev/null 2>&1
res=$?
echo "exit status: $res"
Nach Ausführung:
./a.sh 'echo aa | grep -q zzz'
arg passed CMD: echo aa | grep -q zzz
exit status: 0
in script CMD: echo aaa | grep -q zzz
exit status: 0
Allerdings, wenn ich den Befehl direkt in der Schale laufen sehe ich:
/bin/sh -c 'echo aa | grep -q zzz ; echo $?'
1
Wie sollte mein Skript Blick wie, um den korrekten Status 1
anstelle von 0
des ausgeführten Kommas zu erhalten nd?