Que fait le programme gnuwin32: [.exe?
Question
Dans le répertoire gnuwin32 / bin, vous trouverez un fichier programme étrange nommé [. exe
Je ne pouvais pas le trouver dans la documentation, gnuwin32.sourceforge.net ou dans une recherche google. Je l'ai donc exécuté et j'ai obtenu:
$ [
[: missing `]'
$
donc je l'ai donné] en tant que paramètre et obtenu
$ [ ]
$
Il ne s’est pas plaint, alors j’ai pensé que c’était sur la bonne voie. J'ai essayé:
$ [ hello ]
encore, rien à redire. alors j'ai essayé une expression arithmétique:
$ [ 1 + 1 ]
[: +: binary operator expected
$
J'ai essayé plusieurs combinaisons différentes, notamment prefix & amp; notation postfixée mais rien ne semblait fonctionner. Que fait cette chose?
La solution
Il est utilisé pour évaluer les expressions conditionnelles .
C'est l'équivalent (éventuellement d'un lien symbolique vers?) De l'exécutable test
.
La page de manuel est ici .
Vous pouvez voir cela dans beaucoup de scripts bash:
if [ "$LOGNAME" = "scott" ]
then
echo "Logged in as Scott"
else
echo "incorrect user"
fi
Ce qui est drôle, c'est que le [
] ne fait pas partie du langage bash, c'est en fait un exécutable dont le code de retour est utilisé par le 'IF'. C'est la raison pour laquelle l'espace après [
et son premier argument est obligatoire - s'il était omis, le script essaierait d'exécuter [ "$ LOGNAME"
et échec.
Vous ne pouvez pas effectuer d'opérations arithmétiques avec ce dernier - utilisez expr
pour cela (voir ici ).
Cependant, vous pouvez tester une large gamme de propriétés de fichier (existe-t-il? De quel type est-il? Etc.) ainsi que d'utiliser des opérateurs de comparaison sur les chaînes et les nombres.
Autres conseils
test a
==
[ a ]
C'est juste du sucre
Éditer: Pour clarifier, c’est la syntaxe conditionnelle, par exemple. [" a " = & a; a " ]
Une autre réponse déjà mentionnée est identique à test
. Sur bash, il est également intégré, vous pouvez donc obtenir l’aide correspondante dans help
( help test
).