Відповіді:
Ви отримуєте 0 або 1. У вихідному коді.
bash-4.2$ test 4 -lt 6
bash-4.2$ echo $?
0
bash-4.2$ test 4 -gt 6
bash-4.2$ echo $?
1
Оновлення : щоб зберегти вихідний код для подальшого використання, просто призначте його змінній:
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
$?
змінну - принаймні, доки вона не буде перезаписана наступною командою, яку ви виконуєте.
$PIPESTATUS
масив , щоб отримати результат декількох команд в конвеєрі. $?
буде по бути результатом останньої команди в конвеєрі , якщо опція вимкнена (за замовчуванням). pipefail
if test 4 -lt 6; then echo test succeeeded; else echo test failed; fi
Якщо ви хочете, щоб результат порівняння на стандартному вийшов замість вихідного коду, ви можете скористатися expr(1)
командою:
$ expr 4 '<=' 6
1
Дві речі, які слід зазначити:
test
. test
повертає 0 для true (що є стандартом для кодів виходу), але expr
друкує 1 для true.test
вбудована оболонка, яка значно швидша (приблизно в 50 разів на моїй машині), ніж test
та expr
виконувані файли з пакета coreutils .