Odpowiedzi:
Dostajesz 0 lub 1. W kodzie wyjścia.
bash-4.2$ test 4 -lt 6
bash-4.2$ echo $?
0
bash-4.2$ test 4 -gt 6
bash-4.2$ echo $?
1
Aktualizacja : Aby zapisać kod wyjścia do późniejszego wykorzystania, wystarczy przypisać go do zmiennej:
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
$?
zmiennej - przynajmniej dopóki nie zostanie zastąpiony przez następne wykonywane polecenie.
$PIPESTATUS
tablicy , aby uzyskać wynik wielu poleceń w rurociągu. $?
będzie przez wynikać z ostatniego polecenia w rurociągu, jeżeli opcja jest wyłączona (ustawienie domyślne). pipefail
if test 4 -lt 6; then echo test succeeeded; else echo test failed; fi
Jeśli chcesz uzyskać wynik porównania standardowego wyjścia zamiast kodu wyjścia, możesz użyć expr(1)
polecenia:
$ expr 4 '<=' 6
1
Dwie rzeczy do zapamiętania:
test
. test
zwraca 0 dla true (co jest standardem dla kodów wyjścia), ale expr
drukuje 1 dla true.test
wbudowana powłoka, która jest znacznie szybsza (około 50 razy na mojej maszynie) niż test
i expr
pliki wykonywalne z pakietu coreutils .