Re: [ ] ou [[ ]] ?

Page principale

Répondre à ce message
Auteur: Jérémy Bobbio
Date:  
À: guilde
Sujet: Re: [ ] ou [[ ]] ?
On Thu, Oct 27, 2011 at 12:22:33PM +0200, Marc TERRIER wrote:
> Est-ce qu'une bonne âme voudrait bien me rappeler la différence entre
> les crochets doubles et les crochets simples, dans un 'if' ou un
> 'while', en script shell ? J'écris en ksh, au cas où cette info
> aurait une importance, mais c'est peut-être pareil en bash...


Ma page de man préférée sous Debian pour le shell, c'est celle de dash.

En tout cas, je cite :

  if list
  then list
  [ elif list
  then    list ] ...
  [ else list ]
  fi


while list
do list
done

Ici, `list` c'est une liste de commandes. Et le flux d'exécutions sera
dévié selon le résultat de la dernière commande de cette liste.

`[` est un binaire. Sous Debian, c'est livré dans le paquet coreutils.
Et en fait, c'est la même chose que le binaire `test`. Le dernier
ergument de la commande `[` doit être `]`, mais c'est avant tout pour
une question de lisibilité.

Bon, maintenant, dans tous les shells un peu récent, `[` est un
built-in, c'est à dire que le shell ne va pas lancer l'exécutable mais
faire les calculs en direct.

`[[`, c'est un truc de bash. Et ça calule plus ou moins les même trucs
que `test`. Mais pas tout à fait pareil.

HTH,
-- 
Jérémy Bobbio                        .''`. 
lunar@???                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-