Salut a tous,
Je souhaiterais savoir comment faire une condition en fonction de son retour.
C'est a dire si je lance commande wget www.vlvlvlvl.fr/hello.txt si la commande a une erreur, que je demande a mon script de faire autre chose.
$?
$ c'est pour faire appel a une variable créé au dessus non ?
"$?" te renvoie un code de retour pour savoir si la dernière commande s'est executé correctement, donc pour ton test, tu as juste à tester la valeur de $?
0 = pas d'erreur
sinon le nombre renvoyé est le code de l'erreur
exemple :$touch fichier
$sl
bash: sl : commande introuvable
$echo $?
127
$ls
fichier
$echo $?
0
$mkdir truc
$echo $?
0
$mkdir truc
mkdir: impossible de créer le répertoire « truc »: Le fichier existe
$echo $?
1
Le 25 mai 2016 à 23:07:20 Xantown7 a écrit :
if [[ ${?} == 1 ]] then #intérieur de ta condition fi
Voilà Tu remplaces le 1 par la valeur de retour que tu veux check et c'est bon
Enfin dans ce cas faudrait plutot qu'il vérifie si c'est différent de 0
Xantown, répond a ton topic sur gcc sinon tu vas avoir des ennuis
Merci a tous, j'ai compris et ça a bien fait avancer mon script.
Le 26 mai 2016 à 10:15:23 wlan0 a écrit :
Xantown, répond a ton topic sur gcc sinon tu vas avoir des ennuis
y'a les MPs pour éviter ce genre de messages inutiles
Ou simplement un
if lacommande
then
truc
else
bidule
fi
if vérifie en fait justement le code de retour d'une commande. Les [[ ]] sont une autre écriture de la commande test (voir man test) qui termine correctement (0) quand la condition en argument est vérifiée.
Et si il n'y a qu'à agir en cas de succès en ne faisant pas grand chose, il reste plus simple de faire lacommande && truc
, truc ne sera exécuté que si lacommande réussit.