705 votes

[[]] D’est préférable au [] dans les scripts bash ?

Un collègue a affirmé récemment dans une révision du code car la construction de [[]] est doit être préférée [] dans des constructions telles que les

Il n’a pas pu fournir une justification. Est celui là ?

723voto

Johannes Schaub - litb Points 256113

[[ a moins de surprises et est généralement plus sûr d'utiliser. Mais il n'est pas portable - Posix ne précise pas ce qu'il fait et seulement quelques coquilles de soutien (à côté de bash, j'ai entendu ksh prend en charge). Par exemple, vous pouvez le faire

[[ -e $b ]]

pour tester si un fichier existe. Mais avec [, vous devez citer $b,, parce qu'elle partage l'argument et développe des choses comme "a*" (où [[ prend littéralement). Qui a aussi à voir avec la façon dont [ peut être un programme externe et reçoit son argument juste normalement comme tous les autres programmes (mais il peut aussi être un builtin, mais il n'a toujours pas de ce traitement spécial).

[[ a aussi quelques autres fonctionnalités intéressantes, comme des expressions rationnelles avec =~ le long avec des opérateurs comme ils sont connus dans C-comme les langues. Voici une bonne page à ce sujet: Quelle est la différence entre le test, [ et [[ ? et Bash Tests

16voto

f3lix Points 13634

De Qui de comparaison, test, support, ou double support, est le plus rapide? (http://bashcurescancer.com)

Le double support est un "composé commande" " où, à l'essai et l'unique support de coquille built-ins (et dans l'actualité sont de la même commande). Ainsi, le seul support et double support exécuter un code différent.

Le test et unique support de la la plupart des appareils portables tels qu'ils existent en tant que séparé et des commandes externes. Toutefois, si votre utilisation de tout à distance version moderne de BASH, le double support est pris en charge.

-1voto

scavenger Points 9

les doubles crochets [[]] sont est sous certaine version de SunOS et totalement est à l’intérieur les déclarations de fonctions par : GNU bash, version 2.02.0(1)-release (sparc-sun-solaris2.6)

-2voto

unix4linux Points 37

En un mot, [[est préférable car il n’est pas la fourche un autre processus. Aucun supports ou un support unique est plus un support double lent car il bifurque un autre processus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X