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
Prochaine révision Les deux révisions suivantes
doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie [05/06/2014 08:08]
Hypathie [enchaînements de commandes dans les scripts]
doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie [06/06/2014 08:27]
Hypathie [Enchaînements de commandes dans les scripts]
Ligne 1: Ligne 1:
 ====== script bash : enchaînement de commandes et redirection ​ ====== ====== script bash : enchaînement de commandes et redirection ​ ======
  
-  ​* Objet : du tuto FIXME +  * Niveau requis : {{tag>​débutant}}
-  ​* Niveau requis : FIXME {{tag>​débutant ​avisé}} +
-  * Commentaires : //Contexte d'​utilisation du sujet du tuto. // 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>en-chantier à-tester ​à-placer}} ​- FIXME Pour choisir, voir les autres Tags possibles dans [[:​atelier:#​tags|l'​Atelier]]. +  * Suivi : {{tag>​à-placer}} 
-    * Création par **Hypathie** ​03/06/2014 +    * Création par **Hypathie** ​18/03/2014 
-    * Testé par <...> le <...FIXME +    * Testé par <Hypathie> le <Juin 2014
-  * Commentaires sur le forum : [[url | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME+  * Commentaires sur le forum : [[url | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
-**Nota : wiki n°4**+**Nota : wiki n°4**\\ 
 +**Les autres numéros :** 
 +  * wiki n°1 : [[atelier:​chantier:​debuter-avec-les-scripts-shell-bash]] 
 +  * wiki n°2 : [[atelier:​chantier:​script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]] 
 +  * wiki n°3 : [[atelier:​chantier:​script-bash-detail-sur-les-parametres-et-les-boucles|script-bash-detail-sur-les-parametres]]  
 +   
 +  * wiki n°5 : [[atelier:​chantier:​script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] 
 +  * wiki n°6 : [[atelier:​chantier:​script-bash-les-tableaux|script-bash-les-tableaux]] 
 +  * wiki n°7 : [[atelier:​chantier:​script-bash-les-fonctions|script-bash-les-fonctions]]
  
 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 !
Ligne 21: Ligne 27:
 </​code>​ </​code>​
  
-Pour les opérateurs de contrôle ​et l'​enchaînement conditionné ( && ; || ) 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]]+Pour les opérateurs de contrôle ​du point de vue de **l'​enchaînement conditionné** (avec && ; || ) 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 successivité ​====+====parallélisme et succession====
  
 ===1) les opérateurs & , && et ;=== ===1) les opérateurs & , && et ;===
Ligne 88: Ligne 94:
 Il n'y a donc pas besoin d'​espace entre la parenthèse ouvrante et la première commande.\\ Il n'y a donc pas besoin d'​espace entre la parenthèse ouvrante et la première commande.\\
 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.\\ ​
-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**, le script, ne peut pas lire les variables créées dans le processus fils, le sous-shell. ​ 
  
 <code bash> <code bash>
Ligne 94: Ligne 99:
 nom=nenette nom=nenette
 (prenom=hypathie ; echo $prenom ) (prenom=hypathie ; echo $prenom )
-echo $nom $prenom+echo $nom
 </​code>​ </​code>​
 Retour : Retour :
 <​code>​ <​code>​
 +hypathie
 nenette nenette
 </​code>​ </​code>​
 Voir : [[http://​abs.traduc.org/​abs-fr/​ch21.html|Guide avancé d'​écriture des scripts Bash: 21. Sous-shells]] Voir : [[http://​abs.traduc.org/​abs-fr/​ch21.html|Guide avancé d'​écriture des scripts Bash: 21. Sous-shells]]
  
 +====Notion de 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**, le script, ne peut pas lire les variables créées dans le processus fils, le sous-shell.
 +
 +Dans le script ci-dessus 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===
 +[code bash]
 +#!/bin/bash
 +nom=nenette
 +( prenom=hypathie )
 +echo $nom $prenom
 +[/code]
 +Retour :
 +
 +  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 : ça évite de ralentir l'​ensemble du programme.
 +===Lancer deux sous-shell en parallèle ===
 +Il est possible de lancer deux processus en parallèle.
 +
 +[code bash]
 +#!/bin/bash
 +( echo "​bonjour"​ ) & ( echo "au revoir"​ )
 +( cd /etc/apt ; ls ) & ( cd /​etc/​calendar ; ls )
 +echo " "
 +cd /etc/apt ; ls
 +cd /​etc/​calendar ; ls
 +[/code]
 +Comparez le retour.
 +
 +====Le shell restreint ====
 +===Passer en mode restreint ===
 +
 +  set --restricted
 +  ​
 +( ou set -r)
 +
 +===à quoi ça sert dans les script ?===
 +On passe en mode restreint pour diminuer les risques.\\
 +En mode restreint, certaines commandes sont désactivées :
 +  * cd
 +  * exec (commande qui permet des substitution de processus
 +  * 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 l'​utilisation de commandes contenant des / (pour éviter des modification à la racine)
 +  * empêche de modifier les valeurs des variables d'​environnement ​
 +    * $PATH : en le modifiant on peut changer l'​utilisation de certaines commandes.
 +    * $SHELL : en le modifiant on peut utiliser un autre interpréteur,​ en cours de programme.
 +    * $BASH_ENV et $ENV : les modifications de l'​environnement ne se font pas sans connaissances.
 +    * $SHELLOPTS : où on peut changer les options d'​environnement du shell
 +  * et les droits sont limités.
 =====Redirections et le pipe dans les scripts===== =====Redirections et le pipe dans les scripts=====
   * À voir :    * À voir : 
Ligne 283: Ligne 341:
 Tout est là : [[doc:​programmation:​shell:​pipe|le pipe]] Tout est là : [[doc:​programmation:​shell:​pipe|le pipe]]
  
 +=====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-enchainement-de-commandes-et-etat-de-sortie.txt · Dernière modification: 21/10/2015 19:19 par milou

Pied de page des forums

Propulsé par FluxBB