Ответы:
Вы получаете 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
Если вы хотите получить результат сравнения по стандарту out вместо кода выхода, вы можете использовать expr(1)команду:
$ expr 4 '<=' 6
1
Следует отметить две вещи:
test. testвозвращает 0 для истины (что является стандартом для кодов выхода), но exprвыводит 1 для истины.testвстроенная команда оболочки, которая значительно быстрее (около 50 раз на моей машине) , чем testи exprисполняемые файлы из Coreutils пакета.