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".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 03/02/2013, à 14: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, à 19: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, à 15: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 XXème 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, à 16: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, à 02: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ᴉsdnGMT-4

Hors ligne

#5 Le 05/02/2013, à 03: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, à 03: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ᴉsdnGMT-4

Hors ligne

#7 Le 05/02/2013, à 08: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 XXème 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, à 16: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ᴉsdnGMT-4

Hors ligne

Haut de page ↑