Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests [10/07/2014 16:35] Hypathie [État de sortie et code de retour] |
doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests [19/10/2015 13:01] milou [Script bash : état de sortie et les tests] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Script bash : état de sorie et les tests ====== | + | ====== Script bash : état de sortie et les tests ====== |
- | * Niveau requis : {{tag>débutant}} | + | * Objet : Script bash : enchaînement de commandes et redirection |
+ | * Niveau requis : {{tag>débutant avisé}} | ||
+ | * Commentaires : FIXME | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
- | * Suivi : {{tag>à-placer}} | + | * Suivi : |
- | * Création par [[user>Hypathie]] 18/03/2014 | + | * Création par [[user>Hypathie]] le 18/03/2014 |
- | * Testé par <Hypathie> le <Juin 2014> | + | * Testé par [[user>Hypathie]] le Juin 2014 |
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=92203#p92203 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=92203#p92203 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | |||
+ | |||
+ | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
+ | |||
+ | ------ | ||
**Nota : Les autres wiki :** | **Nota : Les autres wiki :** | ||
- | * [[atelier:chantier:debuter-avec-les-scripts-shell-bash]] | + | * [[doc:programmation:shells:debuter-avec-les-scripts-shell-bash]] |
- | * [[atelier:chantier:script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]] | + | * [[doc:programmation:shells:script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]] |
- | * [[atelier:chantier:script-bash-detail-sur-les-parametres-et-les-boucles|modification de variable et de paramètre]] | + | * [[doc:programmation:shells:script-bash-detail-sur-les-parametres-et-les-boucles|modification de variable et de paramètre]] |
- | * [[atelier:chantier:script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]] | + | * [[doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]] |
* ;-) | * ;-) | ||
- | * [[atelier:chantier:script-bash-les-tableaux|script-bash-les-tableaux]] | + | * [[doc:programmation:bash:script:tableaux|script-bash-les-tableaux]] |
- | * [[atelier:chantier:script-bash-les-fonctions|script-bash-les-fonctions]] | + | * [[doc:programmation:bash:script:fonction|script-bash-les-fonctions]] |
- | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
===== État de sortie et code de retour===== | ===== État de sortie et code de retour===== | ||
Ligne 52: | Ligne 59: | ||
|| && ; <retour-chariot> | || && ; <retour-chariot> | ||
</code> | </code> | ||
- | est basé utilise le code de retour : | + | ceux fonctionnant sur le code de retour, sont : |
- | - L'opérateur ''&&'', ''cmd1 && cmd2'' : avec cet opérateur, la commande 2 est exécutée si le code retour de la commande 1 est ''0'' (c'est-à-dire, si elle a fonctionné).\\ | + | - l'opérateur ''et'', ''cmd1 && cmd2'' : avec cet opérateur, la commande 2 est exécutée si le code retour de la commande 1 est ''0'' (c'est-à-dire, si elle a fonctionné). |
- | + | - l'opérateur ''ou'', ''cmd1 || cmd2'' : la commande 2 est exécutée si le code de retour de la première est __différente de zéro__, c'est-à-dire si elle n'a pas fonctionné. | |
- | - L'opérateur ''||'', ''cmd1 || cmd2'' : la commande 2 est exécutée si le code de retour de la première est __différente de zéro__, c'est-à-dire si elle n'a pas fonctionné. | + | |
* Exemple : | * Exemple : | ||
Ligne 113: | Ligne 119: | ||
* Syntaxe : ''exit nombre'' | * Syntaxe : ''exit nombre'' | ||
+ | |||
>Avec un nombre de 1 à 3 chiffre(s). | >Avec un nombre de 1 à 3 chiffre(s). | ||
- | | + | |
===La commande "exit" === | ===La commande "exit" === | ||
''exit'' permet de remplacer le code de retour de la dernière commande d'un script. | ''exit'' permet de remplacer le code de retour de la dernière commande d'un script. | ||
Ligne 132: | Ligne 139: | ||
</code> | </code> | ||
- | puis (dans le même terminal) : | + | <code user> |
+ | ./mon-script | ||
+ | </code> | ||
<code user> | <code user> | ||
echo $? | echo $? | ||
Ligne 210: | Ligne 219: | ||
<note tip> | <note tip> | ||
- | **Attention au signe =** | + | **Attention au signe ''=''** |
- | Ne pas confondre le signe = de l'affectation d'une variable par une valeur (voir ci-dessus [[atelier:chantier:debuter-avec-les-scripts-shell-bash#affectation-directe|affectation directe]])\\ avec l'opérateur de correspondance = (ou == ) utilisé dans les tests.\\ | + | Ne pas confondre le signe ''='' de l'affectation d'une variable par une valeur (voir ci-dessus [[atelier:chantier:debuter-avec-les-scripts-shell-bash#affectation-directe|affectation directe]])\\ avec l'opérateur de correspondance ''='' (ou ''=='' ) utilisé dans les tests.\\ |
- | Dans les tests sur les entiers l'égalité est représentée par l'option -eq ! | + | Dans les tests sur les entiers l'égalité est représentée par l'option ''-eq'' ! |
</note> | </note> | ||
Ligne 219: | Ligne 228: | ||
De même que la composition de commandes vu plus haut, on se sert de la composition avec les tests. Et oui les doubles crochets et la commande test sont des commandes ! LOL | De même que la composition de commandes vu plus haut, on se sert de la composition avec les tests. Et oui les doubles crochets et la commande test sont des commandes ! LOL | ||
- | * séquentielle : cmd1 ; cmd2 | + | * séquentielle : ''cmd1 ; cmd2'' |
- | * parallèle : cmd1 & cmd2 | + | * parallèle : ''cmd1 & cmd2'' |
- | * sur erreur (ou) : cmd1 || cmd2 | + | * sur erreur (ou) : ''cmd1 || cmd2'' |
- | * sur succès (et) : cmd1 && cmd2 | + | * sur succès (et) : ''cmd1 && cmd2'' |
* rappel des options des commandes de test : | * rappel des options des commandes de test : | ||
- | - -z $chaine : teste si la variable ne contient rien | + | - ''-z $chaine'' : teste si la variable ne contient rien |
- | - -n $chaine : teste si la variable contient quelque-chose | + | - ''-n $chaine'' : teste si la variable contient quelque-chose |
<code bash> | <code bash> | ||
Ligne 259: | Ligne 268: | ||
===Alternatives : case et paramètres passés aux scripts=== | ===Alternatives : case et paramètres passés aux scripts=== | ||
<note tip> | <note tip> | ||
- | Attention case n'utilise pas d'expression régulière, il s'agit plutôt de "pattern matching".\\ | + | Attention, ''case'' n'utilise pas d'expression régulière, il s'agit plutôt de "pattern matching".\\ |
Voir : [[http://bash.leyan.org/Cours+5+-+bash+II#Structure_conditionnelle_i_case_i_| les symboles reconnus par cases sont ceux servant à la manipulation des fichiers]]. | Voir : [[http://bash.leyan.org/Cours+5+-+bash+II#Structure_conditionnelle_i_case_i_| les symboles reconnus par cases sont ceux servant à la manipulation des fichiers]]. | ||
</note> | </note> | ||
Ligne 271: | Ligne 280: | ||
esac | esac | ||
</code> | </code> | ||
- | * explications : | + | * Explications : |
- case "teste" la valeur du paramètre passé au script avec chaque "expression" ; | - case "teste" la valeur du paramètre passé au script avec chaque "expression" ; | ||
- et en fonction de la réussite ou de l'échec du test, il y a exécution ou non des commandes placées au niveau de "instructions" ; | - et en fonction de la réussite ou de l'échec du test, il y a exécution ou non des commandes placées au niveau de "instructions" ; | ||
Ligne 363: | Ligne 372: | ||
=====La suite c'est ici===== | =====La suite c'est ici===== | ||
- | [[atelier:chantier:script-bash-les-tableaux|script-bash-les-tableaux]] | + | [[doc:programmation:bash:script:tableaux|script-bash-les-tableaux]] |