O que é / usr / bin / [e como eu o uso?

25

Eu estava olhando para o coreutils e achei isso como um dos arquivos incluídos como parte do coreutils: /usr/bin/[ . O que é [ e o que ele faz?

É um executável. Eu simplesmente não sei o que faz ou como usá-lo.

$ file /usr/bin/[
/usr/bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

Quando eu tento executá-lo, eu acho que é o padrão para a expansão embutida na linha bash. Em vez de realmente executar o arquivo.

$ "/usr/bin/["
/usr/bin/[: missing ]' $ /usr/bin/\[
/usr/bin/[: missing
]'

    
por nelaaro 12.09.2011 / 08:39

2 respostas

33

É um equivalente do comando test . (Veja info test .) Geralmente você usa em scripts em expressões condicionais como:

if [ -n "$1" ]; then
    echo $1
fi

O colchete de fechamento é necessário para incluir o condicional. (Bem, parece que é necessário apenas para parecer mais agradável no código. Alguém sabe alguma outra razão prática para isso?)

    
por 12.09.2011 / 08:51
20

É equivalente ao comando test .

Em vez de

if /usr/bin/test -z "$VAR"
then
    echo VAR not set
fi

Você pode usar:

if /usr/bin/[ -z "$VAR" ]
then
    echo VAR not set
fi

Ele também pode ser usado em loops:

i=0
while [ $i -lt 10 ]
do
   echo $i
   ((i++))
done

Você também pode usá-los em one-liners como este:

[ -z "$VAR" ] && echo VAR not set && exit

[ -f foo.txt ] && cat foo.txt
    
por 12.09.2011 / 10:27