Re: shell

Top Page

Reply to this message
Author: Jérémy Bobbio
Date:  
To: guilde
Subject: Re: shell
On Mon, Mar 23, 2009 at 02:25:01PM +0100, Guillaume Allegre wrote:
> Le Mon 23 Mar 2009 à 13:06 +0000, Patrick Dupre a ecrit :
> > Bonjour,
> >
> > Dans un shell je fais unne commande (par example: mount), comment je
> > peux tester le retour, (cad si le mount c'est bien passe) ?
> >
> > J'ai essaye: if [ $? != 0 ]
> > mais cela ne fonctionne pas correctement !
>
> Tu utilises l'opérateur pour les chaînes, il te faut celui pour les entiers
> ( -eq ou -ne ).
> man bash, section CONDITIONAL EXPRESSIONS


Mh… peut-être vaut-il mieux ré-expliquer la syntaxe de « if » pour
commencer.

Depuis dash(1) :

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


« list » indique ici une liste de commandes. Pour la liste utilisé par
« if » et « elif », si le code de retour de l'exécution de la liste est
0, alors la liste de commande qui se trouve après le « then » est
exécuté.

Donc tout simplement :

  if mount /dev/sda1 /media/sda1; then
    echo OK
  else
    echo KO
  fi


La construction que l'on voit généralement utilise la commande « [ »,
souvent un builtin du shell, mais sous Debian, on peut aussi l'exécuter
par "/usr/bin/[". Souvent c'est un lien en dur vers « /usr/bin/test ».
Voir test(1) pour les détails.

Suis-je clair ?

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