[Script shell] Un petit cours de bash ?

Ce qui ne concerne ni le forum ni des problèmes
Murzan
archer
Messages : 123
Inscription : sam. 06 juin 2009, 14:29

[Script shell] Un petit cours de bash ?

Message par Murzan »

Hello,

Je tente d'exécuter du bash mais j'ai un petit problème, je souhaite, en cas d'erreur, que le script s'interrompe automatiquement.
Je sais qu'en cas de problème, un code d'erreur est retourné, mais je ne sais pas comment l'exploiter... :oops:

Voici un exemple de portion de code :

Code : Tout sélectionner

mkdir /newarch
mkswap /dev/hda3 --> en cas d'erreur s'interrompre
swapon /dev/hda3
...
Merci d'avance !
Avatar de l’utilisateur
schaars
Hankyu
Messages : 44
Inscription : mer. 27 août 2008, 19:59

Re: [Script shell] Un petit cours de bash ?

Message par schaars »

Bonjour

La valeur de retour d'un programme est contenue dans la variable $?.
Par exemple :

Code : Tout sélectionner

$ false 
$ echo $?
1
$ true
$ echo $?
0
Et donc l'idée est de tester cette valeur, par exemple en faisant (j'ai pas regardé

Code : Tout sélectionner

mkswap /dev/hda3 --> en cas d'erreur s'interrompre

if [ $? -eq 0 ]; then
    swapon /dev/hda3
else
    echo erreur
fi
eeepc 1005ha-h + Archlinux + awesome = 9h30 d'autonomie !
ceci n'est pas un easter egg !
Avatar de l’utilisateur
mathieuI
Daikyu
Messages : 55
Inscription : jeu. 19 févr. 2009, 13:08

Re: [Script shell] Un petit cours de bash ?

Message par mathieuI »

schaars a écrit :Bonjour

La valeur de retour d'un programme est contenue dans la variable $?.
Par exemple :

Code : Tout sélectionner

$ false 
$ echo $?
1
$ true
$ echo $?
0
Et donc l'idée est de tester cette valeur, par exemple en faisant (j'ai pas regardé

Code : Tout sélectionner

mkswap /dev/hda3 --> en cas d'erreur s'interrompre

if [ $? -eq 0 ]; then
    swapon /dev/hda3
else
    echo erreur
fi

Code : Tout sélectionner

mkswap /dev/hda3 --> en cas d'erreur s'interrompre

if [ $? -eq 0 ]; then
    swapon /dev/hda3
else
    echo erreur
    kill $$
fi
plutôt, non ? (au cas où le script ne s'arrête pas ici)
\_o< KOIN !!
Avatar de l’utilisateur
aldevar
archer de cavalerie
Messages : 172
Inscription : sam. 25 nov. 2006, 10:55
Localisation : Cote d'armor

Re: [Script shell] Un petit cours de bash ?

Message par aldevar »

Pour completer la réponse de schaars, je rajouterai quelques variables très pratique à connaitre comme par exemple les arguments d'une commandes.

$# ? nombre d'arguments de la commande
$1 ? Premier argument
$2 ? Second argument
etc...

$! renvoie le pid d'une commande en background. Par exemple :

Code : Tout sélectionner

[aldevar@Fifou-Laptop Images]$ firefox &
[1] 548                                 
[aldevar@Fifou-Laptop Images]$ echo $!
548                                   
[aldevar@Fifou-Laptop Images]$
Plus d'info ici
Un blog inintéréssant
Avatar de l’utilisateur
schaars
Hankyu
Messages : 44
Inscription : mer. 27 août 2008, 19:59

Re: [Script shell] Un petit cours de bash ?

Message par schaars »

mathieuI a écrit :

Code : Tout sélectionner

mkswap /dev/hda3 --> en cas d'erreur s'interrompre

if [ $? -eq 0 ]; then
    swapon /dev/hda3
else
    echo erreur
    kill $$
fi
plutôt, non ? (au cas où le script ne s'arrête pas ici)
Oui, on peut faire un exit ou un return si on est dans une fonction. Ça dépend du script, j'ai juste donné l'idée.
eeepc 1005ha-h + Archlinux + awesome = 9h30 d'autonomie !
ceci n'est pas un easter egg !
Murzan
archer
Messages : 123
Inscription : sam. 06 juin 2009, 14:29

Re: [Script shell] Un petit cours de bash ?

Message par Murzan »

Merci pour vos réponses !
Cela m'a permis de compléter mon script qui marche maintenant parfaitement !

Cordialement,
Murzan
Répondre