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 [03/07/2014 00:06] 127.0.0.1 modification externe |
doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests [08/07/2014 20:29] Hypathie [État de sortie et code de retour] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== script bash : état de sorie et les tests ====== | + | ====== Script bash : état de sorie et les tests ====== |
* Niveau requis : {{tag>débutant}} | * Niveau requis : {{tag>débutant}} | ||
Ligne 31: | Ligne 31: | ||
blabla | blabla | ||
</code> | </code> | ||
- | puis | + | |
<code user> | <code user> | ||
echo $? | echo $? | ||
</code> | </code> | ||
- | Retour : | ||
<code> | <code> | ||
127 | 127 | ||
Ligne 48: | Ligne 47: | ||
==== L'enchaînement conditionnel est fondé sur le code de retour==== | ==== L'enchaînement conditionnel est fondé sur le code de retour==== | ||
- | **Parmi les opérateurs d'enchaînement de commandes ** | + | Parmi les opérateurs d'enchaînement de commandes ci-dessous :\\ |
(voir : [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-controle|les opérateurs de contrôle]]) | (voir : [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-controle|les opérateurs de contrôle]]) | ||
<code> | <code> | ||
|| && ; <retour-chariot> | || && ; <retour-chariot> | ||
</code> | </code> | ||
- | **est basé utilise le code de retour :** | + | est basé utilise le code de retour : |
- | - L'opérateur **"&&"** : avec cet opérateur, chaque commande d'une suite est exécuté l'une après l'autre si le code retour de la première est 0 (c'est-à-dire si elle a fonctionné).\\ | + | - L'opérateur ''&&'' : avec cet opérateur, chaque commande d'une suite est exécuté l'une après l'autre si le code retour de la première est 0 (c'est-à-dire si elle a fonctionné).\\ |
- | - L'opérateur **||** : la commande suivante 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 ''||'' : la commande suivante 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 : soit le dossier "Mon-dossier" non-vide; le dossier "mon-dossier" vide; et le dossier "mondossier" inexistant. | + | * Exemple : |
+ | |||
+ | Soit le dossier "Mon-dossier" non-vide; le dossier "mon-dossier" vide; et le dossier "mondossier" inexistant. | ||
<code bash> | <code bash> | ||
Ligne 72: | Ligne 73: | ||
( [ $reponse == oui ] && echo " le dossier va être créé" ) #; && mkdir ~/mondossier | ( [ $reponse == oui ] && echo " le dossier va être créé" ) #; && mkdir ~/mondossier | ||
</code> | </code> | ||
- | (Les antislash ne sont pas obligatoires, ils servent à rendre plus lisible les longues commandes qui se suivent sur une ligne.\\ | + | >Les antislash ne sont pas obligatoires, ils servent à rendre plus lisible les longues commandes qui se suivent sur une ligne. |
- | On inhibe là le <retour-chariot> !) | + | >On inhibe là le ''<retour-chariot>'' ! |
<note> | <note> | ||
- | Les opérateurs && et || s'utilisent comme les opérateurs binaires.\\ | + | Les opérateurs ''&&'' et ''||'' s'utilisent comme les opérateurs binaires.\\ |
- | Avec eux eux, c'est soit 0 soit autre chose que 0.\\ | + | Avec eux eux, c'est soit ''0'' soit autre chose que ''0'', c'est-à-dire ''1'', ou encore soit vrai, soit faux.\\ |
Voir la liste des [[atelier:chantier:page-man-bash-iv-symboles-dans-les-calculs-mathematiques#operateurs-binaires|opérateurs binaires]] | Voir la liste des [[atelier:chantier:page-man-bash-iv-symboles-dans-les-calculs-mathematiques#operateurs-binaires|opérateurs binaires]] | ||
</note> | </note> | ||
- | ====3) Inverser le code de retour de la sortie d'une commande==== | + | ====Inverser le code de retour de la sortie d'une commande==== |
<code> | <code> | ||
! commande | ! commande | ||
</code> | </code> | ||
- | Exemple. | + | * Exemple : |
<code user> | <code user> | ||
whoami | whoami | ||
</code> | </code> | ||
- | puis | + | |
<code user> | <code user> | ||
echo $? | echo $? | ||
</code> | </code> | ||
- | retour : 0 | + | <code> |
+ | 0 | ||
+ | </code> | ||
<code user> | <code user> | ||
! whoami | ! whoami | ||
</code> | </code> | ||
- | puis | + | |
<code user> | <code user> | ||
echo $? | echo $? | ||
</code> | </code> | ||
- | retour : 1 | + | <code> |
+ | 1 | ||
+ | </code> | ||
==== Utiliser la commande exit ==== | ==== Utiliser la commande exit ==== | ||
Ligne 109: | Ligne 115: | ||
exit + nombre (nombre de 1 à 3 chiffre(s).) | exit + nombre (nombre de 1 à 3 chiffre(s).) | ||
| | ||
- | ==="exit" permet de remplacer le code de retour de la dernière commande d'un script.=== | + | ===La commande "exit" === |
- | + | ''exit'' permet de remplacer le code de retour de la dernière commande d'un script. | |
- | **exemples** | + | * Exemples : |
Dans ce script, puisque la correspondance est juste, la commande "exit 1" est exécutée, et on sort du programme. | Dans ce script, puisque la correspondance est juste, la commande "exit 1" est exécutée, et on sort du programme. | ||
<code bash> | <code bash> | ||
Ligne 122: | Ligne 128: | ||
</code> | </code> | ||
- | retour | ||
<code> | <code> | ||
bonjour est correspond à bonjour | bonjour est correspond à bonjour | ||
Ligne 131: | Ligne 136: | ||
echo $? | echo $? | ||
</code> | </code> | ||
- | retour : 1 | + | <code> |
+ | 1 | ||
+ | </code> | ||
==="exit" force à sortir du programme=== | ==="exit" force à sortir du programme=== | ||
Ligne 149: | Ligne 156: | ||
echo "$var" | echo "$var" | ||
</code> | </code> | ||
- | retour : | + | |
<code> | <code> | ||
bonjour ne correspond pas à coucou | bonjour ne correspond pas à coucou | ||
Ligne 166: | Ligne 173: | ||
exit 0 | exit 0 | ||
</code> | </code> | ||
- | retour : | ||
<code> | <code> | ||
Ligne 173: | Ligne 179: | ||
===Convention et sortie de programme par défaut=== | ===Convention et sortie de programme par défaut=== | ||
- | **Par convention on finit un script par exit 0**\\ | + | >Par convention on finit un script par exit ''0'' |
+ | >Si on ne finit pas par exit ''0'', il s'exécute un exit ''$?'', ce qui est équivalent à un exit (tout court). | ||
- | **Si on ne finit pas par exit 0, il s'exécute un exit $?, ce qui est équivalent à un exit (tout court)** | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 184: | Ligne 190: | ||
exit 13 | exit 13 | ||
</code> | </code> | ||
- | |||
- | retour : | ||
<code> | <code> | ||
Ligne 191: | Ligne 195: | ||
127 | 127 | ||
</code> | </code> | ||
+ | * Ou encore : | ||
<code user> | <code user> | ||
echo $? | echo $? | ||
</code> | </code> | ||
- | retour : 13 | + | <code> |
+ | 13 | ||
+ | </code> | ||
===== État de sortie et les tests===== | ===== État de sortie et les tests===== | ||
===À savoir :=== | ===À savoir :=== |