web-dev-qa-db-fra.com

Qu'est-ce que / usr / bin / [et comment puis-je utiliser?

Je regardais Coreutils et j'ai trouvé cela comme l'un des fichiers inclus dans le cadre de Coreutils: /usr/bin/[. Quel est [ Et qu'est-ce que ça fait?

C'est un exécutable. Je ne sais tout simplement pas ce que ça fait ou comment l'utiliser.

$ Fichier/usr/bin/[
[.____]/usr/bin/[: ELF Exécutable LSB 32 bits, Intel 80386, version 1 (SYSV), liée dynamique (utilise des libs partagés), pour GNU/Linux 2.6.15, dépouillé

Lorsque j'essaie de l'exécuter, je pense qu'il est en défaut de l'expansion de la ligne bash intégrée. Au lieu d'exécuter réellement le fichier.

$ "/ usr/bin/["
[.____]/usr/bin/[: manquant ]' $ /usr/bin/\[
/usr/bin/[: missing
] '

26
nelaaro

C'est un équivalent de la commande test. (Voir info test.) Généralement, vous l'utilisez dans des scripts dans des expressions conditionnelles telles que:

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

Le support de fermeture est tenu de renfermer le conditionnel. (Eh bien, il semble que c'est requis juste pour avoir l'air plus agréable dans le code. Quelqu'un peut-il connaître une autre raison pratique?)

33
Rajish

Cela équivaut à la commande test.

À la place de

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

Vous pouvez utiliser:

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

Il peut aussi être utilisé dans des boucles:

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

Vous pouvez également les utiliser dans des doublures comme ceci:

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

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