Quelle est la différence entre

Duplicata possible:
en utilisant un support simple ou double – bash

Quand devrais-je utiliser un seul support? [

Quand dois-je utiliser les doubles crochets? [[

Sont les deux POSIX conforms?

La parenthèse unique est la forme traditionnelle, et est souvent implémentée comme une command externe. Double bracket est une extension bash (et ksh et zsh), n'est pas dans POSIX et a l'avantage d'avoir une syntaxe plus claire (voir ci-dessous) et de ne pas utiliser un process séparé.

L'une des différences de syntaxe est que les opérateurs < et > (note: pas POSIX standard) n'ont pas besoin d'être échappés ou cités pour éviter de lire en tant qu'opérateur de redirection. Aussi, [ nécessite quelques astuces dans le cas où l'une des strings pourrait être vide ou commencer avec un trait d'union. C'est pourquoi vous voyez des scripts faire quelque chose comme [ "x$ASD" == xValue ] alors qu'avec bash ils pourraient simplement utiliser [[ $ASD == Value ]] . Notez que l'astuce "x" n'est pas ssortingctement nécessaire avec une command compatible POSIX testant une seule chose, voir cette question pour plus de détails à ce sujet.

La FAQ bash a pour plus d'informations sur les différences. Cela a également été répondu sur un autre site d'échange de stack.

Seul [ ( test ) est dans POSIX. Vous ne findez pas [[ spécifié dans POSIX sauf en tant que mot réservé que les implémentations peuvent utiliser. Bash utilise en effet [[ comme opérateur de test amélioré, et si vous écrivez des scripts ciblant spécifiquement bash , utilisez toujours [[ car il est beaucoup plus puissant que [ et plus sûr d'utiliser aussi. Cependant, si vous ciblez POSIX sh , vous devez utiliser [ , et assurez-vous de citer des arguments et n'utilisez pas plus de 4 arguments pour [ .