[
est un autre nom pour test
. Ces trois lignes sont des lignes de commande qui s'exécutent test
avec certaines options.
Dans la première ligne, il s'agit d'un test standard: [ 5 -gt 4 ]
c'est la même chose que test 5 -gt 4
.
Dans le second, l'expression est omise, ce qui signifie quitter false ( 0 arguments: Exit false (1)
).
Pour le troisième cas, vous utilisez, je suppose, des coreutils GNU. Dans GNU, test
le texte d'aide contient cette note:
NOTE: [ honors the --help and --version options, but test does not.
test treats each of those as it treats any other nonempty STRING.
Il s'agit d' une extension non POSIX ; la motivation semble être la test
nécessité de traiter ces arguments comme des chaînes comme les autres. [
est capable de distinguer le cas d'option du cas de chaîne par la présence du ]
crochet de fermeture .
Notez que votre shell fournira probablement le sien [
, et vous devrez /bin/\[
donc utiliser cette version.
[ OPTION
ne manque pas vraiment de support.En fait, peut-être de façon surprenante,
[
est une commande (située dans/usr/bin/[
) équivalente àtest
. Par conséquent, il était (au moins théoriquement) autorisé à utiliser uniquement le crochet gauche, le crochet droit servant de sucre syntaxique. Cependant, les nouvelles versions du shell l'exigent .la source
test
ci qui ne peuvent pas être utilisées avec une option (non répertoriées avec cette possibilité).[
.]
, mais un POSIX[
peut faire ce qu'il veut, y compris vous appeler des noms et redémarrer la machine ou imprimer un message d'aide si vous l'appelez sans lui. Cela permet GNUgrep
d »[ --version
.test --version
et[ --version ]
cependant sont tenus de retourner true (test pour--version
être la chaîne non vide) et de ne rien produire.