Je regardais coreutils et je l'ai trouvé comme l'un des fichiers inclus dans coreutils: /usr/bin/[
. Qu'est-ce que [
et qu'est-ce qu'il fait?
C'est un exécutable. Je ne sais pas ce qu'il fait ou comment l'utiliser.
$ File / usr / bin / [
/ Usr / bin / [: ELF 32 bits LSB exécutable, Intel 80386, version 1 (SYSV), lié dynamiquement (utilise des libs partagées), pour GNU / Linux 2.6.15, dépouillé
Lorsque j'essaie de l'exécuter, je pense qu'il est en défaut pour l'extension de ligne construite bash. Au lieu d'exécuter le fichier.
$ "/ Usr / bin / ["
/ Usr / bin / [: missing]' $ /usr/bin/\[
/usr/bin/[: missing]' $ /usr/bin/\[
/usr/bin/[: missing]' $ /usr/bin/\[
] '
/usr/bin/[: missing
C'est un équivalent du test
commande. (Voir le info test
.) Généralement, vous l'utilisez dans les scripts dans des expressions conditionnelles comme:
if [ -n "$1" ]; then echo $1 fi
Le support de fermeture est nécessaire pour joindre le conditionnel. (Eh bien, il semble qu'il soit nécessaire de regarder plus agréablement dans le code. Quelqu'un connaît-il d'autres raisons pratiques pour cela?)
C'est équivalent à la commande test
.
Au lieu 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 également être utilisé dans les boucles:
i=0 while [ $i -lt 10 ] do echo $i ((i++)) done
Vous pouvez également les utiliser dans un one-liners comme ceci:
[ -z "$VAR" ] && echo VAR not set && exit [ -f foo.txt ] && cat foo.txt