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


26

Eu estava olhando para coreutils e encontrei este como um dos arquivos incluídos como parte de coreutils: /usr/bin/[. O que é [e o que faz?

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

$ file / usr / bin / [
/ usr / bin / [: executável LSB ELF de 32 bits, Intel 80386, versão 1 (SYSV), vinculado dinamicamente (usa bibliotecas compartilhadas), para GNU / Linux 2.6.15, despojado

Quando tento executá-lo, acho que é o padrão para o bash construído em expansão de linha. Em vez de realmente executar o arquivo.

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



2
man [trabalha no OS X.
Daniel Beck

Respostas:


33

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

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

O colchete de fechamento é necessário para incluir a condicional. (Bem, parece necessário apenas parecer melhor no código. Alguém conhece algum outro motivo prático para isso?)


3
Note-se que [é tanto uma concha interna e externa de um programa com o mesmo (ou semelhante) a utilização. No bash, quando você executa [ou testestá invocando o built-in.
grawity

É necessário porque, se fosse opcional, a sintaxe seria ambígua em determinadas situações.
Random832

20

É equivalente ao testcomando.

Ao invés 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

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 uma linha como esta:

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

[ -f foo.txt ] && cat foo.txt

2
bons exemplos de como usá-lo. "if / usr / bin / ["
nela
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.