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-enchainement-de-commandes-et-etat-de-sortie [10/07/2014 13:48] Hypathie [Enchaînements de commandes dans les scripts] |
doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie [16/10/2015 19:19] milou [Script bash : enchaînement de commandes et redirection] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Script bash : enchaînement de commandes et redirection ====== | ====== Script bash : enchaînement de commandes et redirection ====== | ||
- | * 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]] 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 ! | ||
+ | ------ | ||
**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-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] | * [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] | ||
- | * [[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 ! | ||
=====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 26: | Ligne 31: | ||
</code> | </code> | ||
- | > Pour ce qui concerne les opérateurs de contrôle du point de vue | + | > 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>'' ) |
- | > 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 : [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests?&#etat-de-sortie-et-code-de-retour|état de sortie et code de retour]]. | ||
Ligne 36: | Ligne 40: | ||
>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. | ||
>Par exemple, il faut que le fichier créé soit "connu" du shell pour qu'il puise être ouvert par "gedit" dans ce même shell.) | >Par exemple, il faut que le fichier créé soit "connu" du shell pour qu'il puise être ouvert par "gedit" dans ce même shell.) | ||
- | * Avec l'opérateur de contrôle "&&" : succession conditionnée. | + | * Avec l'opérateur de contrôle ''&&'' : succession conditionnée. |
>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 | ||
Ligne 73: | Ligne 77: | ||
==={ 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 101: | Ligne 105: | ||
</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 161: | Ligne 165: | ||
Les variables comprises dans ces parenthèses, à l'intérieur du sous-shell, ne sont pas visibles par le reste du script. Le __processus parent__ ou __père__ ne peut pas accéder aux variables créées dans __le processus fils, le sous-shell__. | Les variables comprises dans ces parenthèses, à l'intérieur du sous-shell, ne sont pas visibles par le reste du script. Le __processus parent__ ou __père__ ne peut pas accéder aux variables créées dans __le processus fils, le sous-shell__. | ||
- | Dans le script ci-dessous, on voit que le terminal "reçoit le retour du shell père et celui du shell fils ( ''"echo $prenom"'' ). | + | Dans le script ci-dessous, on voit que le terminal "reçoit le retour du shell père et celui du shell fils\\ ( ''"echo $prenom"'' ). |
===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=== | ||
Ligne 172: | Ligne 176: | ||
</code> | </code> | ||
+ | nenette | ||
- | nenette | + | >Créer un sous-shell permet ainsi de protéger de ce qui se passe dans le processus fils. |
- | + | >Créer un processus fil permet aussi au processus père de continuer son programme "pendant" l'exécution du processus fils, ce qui évite de ralentir l'ensemble du programme. | |
- | >Créer un sous-shell permet ainsi de protéger de ce qui se passe dans le processus fils.\\ | + | |
- | Créer un processus fil permet aussi au processus père de continuer son programme "pendant" l'exécution du processus fils : ça évite de ralentir l'ensemble du programme. | + | |
<note tip> | <note tip> | ||
Ligne 226: | Ligne 229: | ||
* empêche de sortir du mode restreint depuis le script qui la mis en place | * empêche de sortir du mode restreint depuis le script qui la mis en place | ||
* empêche les redirections de sortie (écrire dans des fichiers) | * empêche les redirections de sortie (écrire dans des fichiers) | ||
- | * empêche l'utilisation de commandes contenant des / (pour éviter des modification à la racine) | + | * empêche l'utilisation de commandes contenant ''/'' (pour éviter des modification à la racine) |
* empêche de modifier les valeurs des variables d'environnement | * empêche de modifier les valeurs des variables d'environnement | ||
* ''$PATH'' : en le modifiant on peut changer l'utilisation de certaines commandes. | * ''$PATH'' : en le modifiant on peut changer l'utilisation de certaines commandes. | ||
Ligne 234: | Ligne 237: | ||
* 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]] | ||