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-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 [21/10/2015 19:19] (Version actuelle)
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 <​Hypathiele <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]] +  * [[doc:programmation:​shells:​script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sortie-et-les-tests]] 
-  * [[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 ! 
  
 =====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 30:
 </​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 : [[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]].
-> 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]].+
  
 ====Parallélisme et succession & , && et ;==== ====Parallélisme et succession & , && et ;====
Ligne 36: 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. ​
 >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
 >​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 51: 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 73: 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 79: Ligne 82:
 </​note>​ </​note>​
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 { pwd ; cd ~/Documents ; echo $(pwd) ;} { pwd ; cd ~/Documents ; echo $(pwd) ;}
Ligne 92: 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 101: 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 113: 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 128: 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 144: Ligne 147:
  
 Mais : Mais :
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 var1=coucou var1=coucou
Ligne 161: Ligne 164:
 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===
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 nom=nenette nom=nenette
Ligne 172: Ligne 175:
 </​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 199: 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 226: Ligne 228:
   * 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 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 334: 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 365: 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]]
doc/programmation/shells/script-bash-enchainement-de-commandes-et-etat-de-sortie.1404992906.txt.gz · Dernière modification: 10/07/2014 13:48 par Hypathie

Pied de page des forums

Propulsé par FluxBB