Respostas:
Você recebe 0 ou 1. No código de saída.
bash-4.2$ test 4 -lt 6
bash-4.2$ echo $?
0
bash-4.2$ test 4 -gt 6
bash-4.2$ echo $?
1
Atualização : para armazenar o código de saída para uso posterior, basta atribuí-lo a uma variável:
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
$?variável - pelo menos até que seja substituído pelo próximo comando que você executa.
$PIPESTATUSmatriz para obter o resultado de vários comandos em um pipeline. $?será o resultado do último comando no pipeline se a pipefailopção estiver desativada (o padrão).
if test 4 -lt 6; then echo test succeeeded; else echo test failed; fi
Se você deseja o resultado de uma comparação na saída padrão em vez de um código de saída, pode usar o expr(1)comando:
$ expr 4 '<=' 6
1
Duas coisas a serem observadas:
test. testretorna 0 para true (que é o padrão para códigos de saída), mas exprimprime 1 para true.testshell embutido, que é consideravelmente mais rápido (cerca de 50 vezes na minha máquina) do que os executáveis teste exprdo pacote coreutils .