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
`. `'`
`-