A tarefa do comando [
é avaliar expressões de teste. Ele retorna com um status de saída 0 (que significa verdadeiro ) quando a expressão é resolvida para true e outra coisa (o que significa false ) caso contrário.
Não é que não faça nada, é apenas que o resultado é encontrado no status de saída. Em um shell, você pode descobrir sobre o status de saída do último comando em $?
para shells semelhantes a Bourne ou $status
na maioria dos outros shells (fish / rc / es / csh / tcsh ...).
$ [ a = a ]
$ echo "$?"
0
$ [ a = b ]
$ echo "$?"
1
Em outros idiomas, como perl
, o status de saída é retornado, por exemplo, no valor de retorno de system()
:
$ perl -le 'print system("[", "a", "=", "a", "]")'
0
Observe que todos os shells modernos semelhantes a Bourne (e fish
) possuem um comando [
integrado. Aquele em /bin
normalmente seria executado apenas quando você usa outro shell ou quando você faz coisas como env [ foo = bar ]
ou find . -exec [ -f {} ] \; -print
ou o comando perl
acima ...
O comando [
também é conhecido pelo nome test
. Quando chamado como test
, não requer um argumento ]
de fechamento.
Embora o seu sistema possa não ter uma página man para [
, ele provavelmente tem um para test
. Mas, novamente, observe que isso documentaria a implementação /bin/[
ou /bin/test
. Para saber sobre o [
embutido em seu shell, você deve ler a documentação do seu shell.
Para mais informações sobre o histórico desse utilitário e a diferença com a expressão de teste [[...]]
ksh, convém dar uma olhada neste outro questionário Q & A aqui .