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.
$PIPESTATUS
Array verwenden , um das Ergebnis mehrerer Befehle in einer Pipeline abzurufen. $?
ist das Ergebnis des letzten Befehls in der Pipeline, wenn die pipefail
Option 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
. test
gibt 0 für true zurück (dies ist der Standard für Exit-Codes), gibt jedoch expr
1 für true aus.test
eingebaute Shell, die erheblich schneller ist (ungefähr 50-mal auf meinem Computer) als die ausführbaren Dateien test
und expr
aus dem Paket coreutils .