
Eu estava olhando coreutils e descobri que este era um dos arquivos incluídos como parte do 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/[: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
Quando tento executá-lo, acho que o padrão é a expansão de linha incorporada do bash. Em vez de realmente executar o arquivo.
$ "/usr/bin/["
/usr/bin/[: missing ‘]’
$ /usr/bin/\[
/usr/bin/[: missing ‘]’
Responder1
É equivalente ao comando test
. (Veja info test
.) Geralmente você usa isso 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 que é necessário apenas ter uma aparência melhor no código. Alguém sabe alguma outra razão prática para isso?)
Responder2
É equivalente ao test
comando.
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
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 linhas simples como esta:
[ -z "$VAR" ] && echo VAR not set && exit
[ -f foo.txt ] && cat foo.txt