Antworten:
Sie erhalten 0 oder 1. Im Exitcode.
bash-4.2$ test 4 -lt 6
bash-4.2$ echo $?
0
bash-4.2$ test 4 -gt 6
bash-4.2$ echo $?
1
Update : Um den Exitcode für die spätere Verwendung zu speichern, weisen Sie ihn einfach einer Variablen zu:
bash-4.2$ test 4 -lt 6
bash-4.2$ first=$?
bash-4.2$ test 4 -gt 6
bash-4.2$ second=$?
bash-4.2$ echo "first test gave $first and the second $second"
first test gave 0 and the second 1
$?Variable eingefügt - zumindest so lange, bis er vom nächsten ausgeführten Befehl überschrieben wird.
$PIPESTATUSArray verwenden , um das Ergebnis mehrerer Befehle in einer Pipeline abzurufen. $?ist das Ergebnis des letzten Befehls in der Pipeline, wenn die pipefailOption deaktiviert ist (Standardeinstellung).
if test 4 -lt 6; then echo test succeeeded; else echo test failed; fi
Wenn Sie anstelle eines Exit-Codes das Ergebnis eines Standard-Out-Vergleichs erhalten möchten, können Sie den folgenden expr(1)Befehl verwenden:
$ expr 4 '<=' 6
1
Zwei Dinge zu beachten:
test. testgibt 0 für true zurück (dies ist der Standard für Exit-Codes), gibt jedoch expr1 für true aus.testeingebaute Shell, die erheblich schneller ist (ungefähr 50-mal auf meinem Computer) als die ausführbaren Dateien testund expraus dem Paket coreutils .