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 | ||
doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie [16/10/2015 19:06] milou [Script bash : enchaînement de commandes et redirection] |
doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie [21/10/2015 19:19] (Version actuelle) milou [Script bash : enchaînement de commandes et redirection] |
||
---|---|---|---|
Ligne 8: | Ligne 8: | ||
* Création par [[user>Hypathie]] le 18/03/2014 | * Création par [[user>Hypathie]] le 18/03/2014 | ||
* Testé par [[user>Hypathie]] Juin 2014 | * Testé par [[user>Hypathie]] 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=142174#p142174 | 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 ! | 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 :** | ||
Ligne 18: | Ligne 17: | ||
* [[doc:programmation:shells: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-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] | + | * [[doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sortie-et-les-tests]] |
- | * [[doc:programmation:bash:script:tableaux|script-bash-les-tableaux]] | + | * [[doc:programmation:shells:tableaux|script-bash-les-tableaux]] |
- | * [[doc:programmation:bash:script:fonction|script-bash-les-fonctions]] | + | * [[doc:programmation:shells:fonction|script-bash-les-fonctions]] |
=====Enchaînements de commandes dans les scripts===== | =====Enchaînements de commandes dans les scripts===== | ||
- | Parmi les opérateurs d'enchaînement de commandes (voir [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-controle|les opérateurs de contrôle]])\\ | + | Parmi les opérateurs d'enchaînement de commandes (voir [[doc:programmation:shells:bash-les-differents-caracteres-speciaux#les-operateurs-de-controle|les opérateurs de contrôle]])\\ |
* considérons maintenant : | * considérons maintenant : | ||
<code> | <code> | ||
Ligne 32: | Ligne 31: | ||
> Pour ce qui concerne les opérateurs de contrôle du point de vue de **l'enchaînement conditionné** (avec ''<nowiki>&&</nowiki>'' et ''<nowiki>||</nowiki>'' ) | > Pour ce qui concerne les opérateurs de contrôle du point de vue de **l'enchaînement conditionné** (avec ''<nowiki>&&</nowiki>'' et ''<nowiki>||</nowiki>'' ) | ||
- | > voir : [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests?&#etat-de-sortie-et-code-de-retour|état de sortie et code de retour]]. | + | > voir : [[doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests?&#etat-de-sortie-et-code-de-retour|état de sortie et code de retour]]. |
====Parallélisme et succession & , && et ;==== | ====Parallélisme et succession & , && et ;==== | ||
Ligne 40: | Ligne 39: | ||
>Toutes les commandes sont exécutées parallèlement. | >Toutes les commandes sont exécutées parallèlement. | ||
>Dans l'exemple ci-dessus, chaque commande étant traitée par un sous-shell, | >Dans l'exemple ci-dessus, chaque commande étant traitée par un sous-shell, | ||
- | >le résultat d'une commande ne peut pas être conservée dans un même [[atelier:chantier:bash-les-differents-caracteres-speciaux?&#notion-de-processus|processus]], | + | >le résultat d'une commande ne peut pas être conservée dans un même [[doc:programmation:shells:bash-les-differents-caracteres-speciaux?&#notion-de-processus|processus]], |
>afin que chaque commande puisse "travailler" en rapport au résultat de la | >afin que chaque commande puisse "travailler" en rapport au résultat de la | ||
>commande précédente. | >commande précédente. | ||
Ligne 49: | Ligne 48: | ||
>La commande suivante est exécutée successivement à la précédente, seulement si cette | >La commande suivante est exécutée successivement à la précédente, seulement si cette | ||
>précédente commande a fonctionné. | >précédente commande a fonctionné. | ||
- | >Voir [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests#le-code-de-retour|code de retour]]. | + | >Voir [[doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests#le-code-de-retour|code de retour]]. |
* Avec l'opérateur '';'' : succession non conditionnée | * Avec l'opérateur '';'' : succession non conditionnée | ||
Ligne 55: | Ligne 54: | ||
>Chaque commande est exécuté l'une après l'autre même si l'une d'elle a mal fonctionné. | >Chaque commande est exécuté l'une après l'autre même si l'une d'elle a mal fonctionné. | ||
===Exemple=== | ===Exemple=== | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
set -o posix | set -o posix | ||
Ligne 77: | Ligne 76: | ||
==={ suite-de-commandes ;}=== | ==={ suite-de-commandes ;}=== | ||
- | Entre accolades, la valeur change commande après commande et le changement est conservé jusqu'à la dernière commande parce que toutes la série appartient au même [[atelier:chantier:bash-les-differents-caracteres-speciaux?&#notion-de-processus|processus]]. | + | Entre accolades, la valeur change commande après commande et le changement est conservé jusqu'à la dernière commande parce que toutes la série appartient au même [[doc:programmation:shells:bash-les-differents-caracteres-speciaux?&#notion-de-processus|processus]]. |
<note important> | <note important> | ||
Les accolades sont des mots-clé de bash.\\ | Les accolades sont des mots-clé de bash.\\ | ||
Ligne 83: | Ligne 82: | ||
</note> | </note> | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
{ pwd ; cd ~/Documents ; echo $(pwd) ;} | { pwd ; cd ~/Documents ; echo $(pwd) ;} | ||
Ligne 96: | Ligne 95: | ||
Pour se servir des accolades pour conserver la valeur d'une variable et la faire changer de commande en commande, il ne faut pas terminer le regroupement de commandes par ''&''.\\ | Pour se servir des accolades pour conserver la valeur d'une variable et la faire changer de commande en commande, il ne faut pas terminer le regroupement de commandes par ''&''.\\ | ||
Car cela a pour effet de ne pas exécuter chaque commande dans le shell courant mais dans un sous-shell. | Car cela a pour effet de ne pas exécuter chaque commande dans le shell courant mais dans un sous-shell. | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
{ pwd ; cd ~/Documents ; echo $(pwd) ;} & | { pwd ; cd ~/Documents ; echo $(pwd) ;} & | ||
Ligne 105: | Ligne 104: | ||
</code> | </code> | ||
- | > Le prompt ne revient pas il faut faire ''Ctrlc'' ! | + | > Le prompt ne revient pas il faut faire <key>C-c</key> ! |
</note> | </note> | ||
Ligne 117: | Ligne 116: | ||
Insérée dans une parenthèse, la suite de commandes est exécutée dans un sous-shell.\\ | Insérée dans une parenthèse, la suite de commandes est exécutée dans un sous-shell.\\ | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
nom=nenette | nom=nenette | ||
Ligne 132: | Ligne 131: | ||
<note tip> | <note tip> | ||
On ne confondra plus ! | On ne confondra plus ! | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
{ var1=yep ;} | { var1=yep ;} | ||
Ligne 148: | Ligne 147: | ||
Mais : | Mais : | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
var1=coucou | var1=coucou | ||
Ligne 169: | Ligne 168: | ||
===Le processus père ne peut pas récupérer les variables d'un processus fils=== | ===Le processus père ne peut pas récupérer les variables d'un processus fils=== | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
nom=nenette | nom=nenette | ||
Ligne 202: | Ligne 201: | ||
Il est possible de lancer deux processus en parallèle. | Il est possible de lancer deux processus en parallèle. | ||
Comparez le retour des lignes n°2 et n°3 avec celles des lignes n°5 et n°6 du code ci-dessous. | Comparez le retour des lignes n°2 et n°3 avec celles des lignes n°5 et n°6 du code ci-dessous. | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
( echo "bonjour" ) & ( echo "au revoir" ) | ( echo "bonjour" ) & ( echo "au revoir" ) | ||
Ligne 237: | Ligne 236: | ||
* et les droits sont limités. | * et les droits sont limités. | ||
=====Redirections et le pipe ===== | =====Redirections et le pipe ===== | ||
- | * Liste des opératieurs : [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-redirection|un tableau des opérateurs de redirection]] | + | * Liste des opératieurs : [[doc:programmation:shells:bash-les-differents-caracteres-speciaux#les-operateurs-de-redirection|un tableau des opérateurs de redirection]] |
* Exercices dans le terminal, tout est là : [[doc:programmation:shell:chevrons| les chevrons]] | * Exercices dans le terminal, tout est là : [[doc:programmation:shell:chevrons| les chevrons]] | ||
Ligne 337: | Ligne 336: | ||
===une solution=== | ===une solution=== | ||
Bonne lecture ;-) | Bonne lecture ;-) | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
set -o posix | set -o posix | ||
Ligne 368: | Ligne 367: | ||
=====La suite c'est ici===== | =====La suite c'est ici===== | ||
- | [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] | + | [[doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] |