logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
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 [22/10/2015 18:39] (Version actuelle)
milou [La suite c'est ici]
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=142600#p142600 ​| 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:​shells:​tableaux|script-bash-les-tableaux]] 
-  * [[atelier:chantier:script-bash-les-fonctions|script-bash-les-fonctions]]+  * [[doc:programmation:shells:​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 34: Ligne 39:
 echo $? echo $?
 </​code>​ </​code>​
-<code>+<file config retour de la commande>
 127 127
-</code>+</file>
  
 >On peut chercher dans les codes d'​erreur de bash que ''​127''​ est le code de retour pour les commandes qui n'ont pas pu être trouvées. >On peut chercher dans les codes d'​erreur de bash que ''​127''​ est le code de retour pour les commandes qui n'ont pas pu être trouvées.
Ligne 48: Ligne 53:
 ==== 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 ci-dessous :​\\  ​ 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 : [[doc:programmation:​shells:​bash-les-differents-caracteres-speciaux#​Les opérateurs ​de contrôle|les opérateurs de contrôle]])
 <​code>​ <​code>​
   ||    && ​   ;    <​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 62: Ligne 66:
 Soit le dossier "​Mon-dossier"​ non-vide; le dossier "​mon-dossier"​ vide; et le dossier "​mondossier"​ inexistant. Soit le dossier "​Mon-dossier"​ non-vide; le dossier "​mon-dossier"​ vide; et le dossier "​mondossier"​ inexistant.
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 cd ~/​Mon-dossier && ls # => titi  toto cd ~/​Mon-dossier && ls # => titi  toto
Ligne 79: Ligne 83:
 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'',​ c'​est-à-dire ''​1'',​ ou encore soit vrai, soit faux.\\ 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 [[doc:programmation:​shells:​page-man-bash-iv-symboles-dans-les-calculs-mathematiques#​operateurs-binaires|opérateurs binaires]]
 </​note>​ </​note>​
  
Ligne 95: Ligne 99:
 echo $?  ​ echo $?  ​
 </​code>​ </​code>​
-<code+<file config retour de la commande
-+ 0 
-</code>+</file>
  
 <code user> <code user>
Ligne 106: Ligne 110:
 echo $?  ​ echo $?  ​
 </​code>​ </​code>​
-<code>+<file config retour de la commande>
 1 1
-</code>+</file>
  
 ==== Utiliser la commande exit ==== ==== Utiliser la commande exit ====
  
   * 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.
   * 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 mon-script>
 var=bonjour var=bonjour
 if [ $var == bonjour ] ; then if [ $var == bonjour ] ; then
Ligne 132: Ligne 137:
 </​code>​ </​code>​
  
-puis (dans le même terminal) :+<code user> 
 +./​mon-script 
 +</​code>​
 <code user> <code user>
 echo $? echo $?
 </​code>​ </​code>​
-<code>+<file config retour de la commande>
 1 1
-</code>+</file>
  
 ==="​exit"​ force à sortir du programme=== ==="​exit"​ force à sortir du programme===
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 var=bonjour var=bonjour
Ligne 159: Ligne 166:
 <​code>​ <​code>​
 bonjour ne correspond pas à coucou bonjour ne correspond pas à coucou
 + 0
 </​code>​ </​code>​
  
 ==="​exit"​ et les paramètres passés au script === ==="​exit"​ et les paramètres passés au script ===
 Lançons ce script avec aucun argument ou un autre que "​a"​. Lançons ce script avec aucun argument ou un autre que "​a"​.
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 if [[ $1 == a ]] ; then  if [[ $1 == a ]] ; then 
Ligne 180: Ligne 187:
 ===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 $?''​ par défaut, ce qui est équivalent à un ''​exit''​ (tout court). ​ >Si on ne finit pas par ''​exit 0'',​ il s'​exécute un ''​exit $?''​ par défaut, ce qui est équivalent à un ''​exit''​ (tout court). ​
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 var=bonjour var=bonjour
Ligne 199: Ligne 207:
 echo $? echo $?
 </​code>​ </​code>​
-<code>+<file config retour de la commande>
 13 13
-</code>+</file>
 ===== État de sortie et les tests===== ===== État de sortie et les tests=====
 ===À savoir :===  ===À savoir :=== 
  
-  * [[atelier:chantier:​la-page-man-bash-ii-les-operateurs-lexicographiques|les opérateurs lexicographiques]] et leur syntaxe +  * [[doc:programmation:​shells:​la-page-man-bash-ii-les-operateurs-lexicographiques|les opérateurs lexicographiques]] et leur syntaxe 
-  * [[atelier:chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|les opérateurs de comparaison numérique et leur syntaxe]] +  * [[doc:programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|les opérateurs de comparaison numérique et leur syntaxe]] 
-  * La commande test ou les crochets :[[atelier:chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique#​conclusion-sur-les-operateurs-lexicographiques-et-les-operateurs-de-comparaison-numerique]]+  * La commande test ou les crochets :[[doc:​programmation:shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique#​conclusion-sur-les-operateurs-lexicographiques-et-les-operateurs-de-comparaison-numerique]]
  
 <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 [[doc:programmation:​shells:​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 227:
 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 + 
-  * sur erreur (ou) : cmd1 || cmd2 +  * parallèle : ''​cmd1 & cmd2''​ 
-  * sur succès (et) : cmd1 && cmd2+ 
 +  * sur erreur (ou) : ''​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+
  
-<code bash>+  - ''​-n $chaine''​ : teste si la variable contient quelque-chose 
 + 
 +<code bash script>
 #!/bin/bash #!/bin/bash
 #var3 est nulle, non déclarée, (ou non initialisée) : sa valeur est nulle #var3 est nulle, non déclarée, (ou non initialisée) : sa valeur est nulle
Ligne 259: Ligne 271:
 ===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 283:
 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 280: Ligne 292:
   - esac pour finir. ​   - esac pour finir. ​
   * exemple :   * exemple :
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 # passer le paramètre '​coco'​ à ce script ; puis '​cucu'​ ; titi puis toto, puis celui que voulez. # passer le paramètre '​coco'​ à ce script ; puis '​cucu'​ ; titi puis toto, puis celui que voulez.
Ligne 310: Ligne 322:
 Ci-dessous, les valeurs de la variable1 (var1) et de la variable2 (var2) peuvent être les arguments passés au script. Ci-dessous, les valeurs de la variable1 (var1) et de la variable2 (var2) peuvent être les arguments passés au script.
 //(Lancez "​mon-script"​ successivement sans argument, puis un, deux trois, etc. arguments.)//​ //(Lancez "​mon-script"​ successivement sans argument, puis un, deux trois, etc. arguments.)//​
-<​code>​+<​code ​bash script>
 #!/bin/bash #!/bin/bash
 var1=$1 var1=$1
Ligne 329: Ligne 341:
    
 Avec la structure conditionnelle if, on peut aussi faire des tests sur la (les) valeur(s) déclarée(s) dans le script. Avec la structure conditionnelle if, on peut aussi faire des tests sur la (les) valeur(s) déclarée(s) dans le script.
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 var1=23 var1=23
Ligne 359: Ligne 371:
 Pour modifier la valeur d'une variable d'un script (que le script appelle une valeur extérieure;​ chaîne de caractère donnée par le terminale, récupération du résultat d'une commande, contenu d'un fichier, etc. ou que cette variable soit affectée dans le script lui-même) on utilise les boucles [[doc:​programmation:​shell:​avancee#​boucle-tant-que-while|while]] et [[doc:​programmation:​shell:​avancee#​boucle-pour-tout-for|for]].\\ ​ Pour modifier la valeur d'une variable d'un script (que le script appelle une valeur extérieure;​ chaîne de caractère donnée par le terminale, récupération du résultat d'une commande, contenu d'un fichier, etc. ou que cette variable soit affectée dans le script lui-même) on utilise les boucles [[doc:​programmation:​shell:​avancee#​boucle-tant-que-while|while]] et [[doc:​programmation:​shell:​avancee#​boucle-pour-tout-for|for]].\\ ​
  
-On peut aussi modifier la valeur d'une variable d'un script, en exportant depuis le terminal une nouvelle valeur (voir [[atelier:chantier:​script-bash-variables-arguments-parametres#​exportation-de-la-valeur-d-une-variable|"​export"​]] )+On peut aussi modifier la valeur d'une variable d'un script, en exportant depuis le terminal une nouvelle valeur (voir [[doc:programmation:​shells:​script-bash-variables-arguments-parametres#​exportation-de-la-valeur-d-une-variable|"​export"​]] )
 </​note>​ </​note>​
  
 =====La suite c'est ici===== =====La suite c'est ici=====
-[[atelier:chantier:script-bash-les-tableaux|script-bash-les-tableaux]]+[[doc:programmation:​shells:​tableaux|script-bash-les-tableaux]]
doc/programmation/shells/script-bash-etat-de-sorie-et-les-tests.1405002911.txt.gz · Dernière modification: 10/07/2014 16:35 par Hypathie

Pied de page des forums

Propulsé par FluxBB