Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 03/02/2013, à 13:40

baba00000000

[Resolu]Bash ce servir de la dernière erreur pour faire une tache.

Bonjour à la communauté.

Je recherche a faire un test "IF" avec le résultat de l'exit de la commande précédente.

Commade précédente ........
exit 0 ou exit 5 ( pour une erreur)

if [ 0 = $2 ]
then
        Tout est OK
else
        mv le dossier dans un répertoire car il y a un problème
fi

Merci à toute les personnes qui nous aide à régler tous nos petits soucis.

Dernière modification par baba00000000 (Le 03/02/2013, à 18:00)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#2 Le 03/02/2013, à 14:34

tiramiseb

Re : [Resolu]Bash ce servir de la dernière erreur pour faire une tache.

le code d'erreur de la commande précédente est dan la variable "$?".

Ça donne donc :

la_commande_qui_va_bien

if [ $? -eq 0 ]
then
   echo "ok"
else
  mv blablamachintruc
fi

Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#3 Le 03/02/2013, à 15:44

baba00000000

Re : [Resolu]Bash ce servir de la dernière erreur pour faire une tache.

Un grand merci à toi tiramiseb.
C'est bien ce que je cherchais. Vais mettre résolu.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#4 Le 05/02/2013, à 01:57

nesthib

Re : [Resolu]Bash ce servir de la dernière erreur pour faire une tache.

En fait le test sur $? est un peu archaïque et tu peux directement accéder au code de retour d'une commande. Prenons l'exemple de grep.

# on peut utiliser les opérateurs &&/||
grep -q root /etc/passwd && echo 'ok' || echo 'pas ok'

# ou encore if
if grep -q root /etc/passwd
then
  echo 'ok'
else
  echo 'pas ok'
fi

# ce qui revient à :
grep -q root /etc/passwd
if [ $? -eq 0 ]
then
  echo 'ok'
else
  echo 'pas ok'
fi 

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#5 Le 05/02/2013, à 02:08

Maisondouf

Re : [Resolu]Bash ce servir de la dernière erreur pour faire une tache.

OUI, bien sûr, mais si la commande a plusieurs codes de retour en fonction de l'erreur, y a pas le choix, faut utiliser $?.


ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor,  OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)

Hors ligne

#6 Le 05/02/2013, à 02:20

nesthib

Re : [Resolu]Bash ce servir de la dernière erreur pour faire une tache.

Oui, mais dans ce cas autant utiliser un case, c'est surtout le « if [ $? -eq 0 ] » que je trouve archaïque wink

grep -q root /etc/passwd
case $? in
  0) echo 'tout va bien' ;;
  1) echo 'motif non trouvé' ;;
  2) echo 'fichier inexistant' ;;
  *) echo 'autre erreur' ;;
esac

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 05/02/2013, à 07:09

tiramiseb

Re : [Resolu]Bash ce servir de la dernière erreur pour faire une tache.

Archaïque toi-même ! lol

... pas ma faute si j'ai appris à scripter au XXme siècle tongue


Cela dit, selon les cas je trouve ça plus lisible : chaque opération sur une ligne !


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#8 Le 05/02/2013, à 15:36

nesthib

Re : [Resolu]Bash ce servir de la dernière erreur pour faire une tache.

@tiramiseb : moi aussi j'ai appris au XXe, mais que veux-tu, il faut vivre avec son temps tongue
pour les structures case, tu peux très bien sauter des lignes et mettre chaque commande sur sa propre ligne smile

case … in
  a)
    commande1
    commande2 ;;
  b)
    …

[/chipotage]


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

Haut de page ↑