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 [07/06/2014 08:31] Hypathie [Redirections et le pipe dans les scripts] |
doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie [20/06/2014 11:45] Hypathie [Enchaînements de commandes dans les scripts] |
||
---|---|---|---|
Ligne 12: | Ligne 12: | ||
* wiki n°1 : [[atelier:chantier:debuter-avec-les-scripts-shell-bash]] | * 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°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°3 : [[atelier:chantier:script-bash-detail-sur-les-parametres-et-les-boucles|modification de variable et de paramètre]] |
| | ||
* wiki n°5 : [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] | * wiki n°5 : [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] | ||
Ligne 22: | Ligne 22: | ||
=====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 [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-controle|les opérateurs de contrôle]])\\ | ||
- | * considérons : | + | * considérons maintenant : |
<code> | <code> | ||
& && ; ( ) { } | & && ; ( ) { } | ||
</code> | </code> | ||
- | 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]]. | + | //(Pour ce qui concerne 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 succession==== | + | ====parallélisme et succession & , && et ;==== |
- | ===1) les opérateurs & , && et ;=== | ||
Reprenons le script "scriptx", et changeons les ";" d'abord par "&", puis par "&&" | Reprenons le script "scriptx", et changeons les ";" d'abord par "&", puis par "&&" | ||
<code bash> | <code bash> | ||
Ligne 55: | Ligne 54: | ||
</note> | </note> | ||
- | ====Regroupement de commandes==== | + | ====Regroupement de commandes, parenthèses ou accolades ?==== |
le shell bash fournit deux mécanismes pour regrouper les commandes; l'insertion de la suite de commandes entre accolades et l'insertion de cette suite de commandes entre une paire de parenthèses. | le shell bash fournit deux mécanismes pour regrouper les commandes; l'insertion de la suite de commandes entre accolades et l'insertion de cette suite de commandes entre une paire de parenthèses. | ||
Ligne 158: | Ligne 157: | ||
nenette | nenette | ||
| | ||
- | Créer un sous-shell permet ainsi de protéger de ce qui se passe dans le processus fils.\ | + | 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. | 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> | ||
+ | En graphique, un sous-shell pour récupérer la main sur le terminal, c'est bien pratique 8-)\\ | ||
+ | Comparez : | ||
+ | <code bash> | ||
+ | virtualbox | ||
+ | </code> | ||
+ | avec : | ||
+ | <code bash> | ||
+ | virtualbox & | ||
+ | [1] 4245 | ||
+ | </code> | ||
+ | //Ici "[1]" est le jobID et "4245" est PID, l'identifiant du processus.//\\ | ||
+ | //(Pour aller plus loin voir la notion de processus et les commandes : ps ; top ; nice et renice.)// | ||
+ | |||
+ | Dans les deux cas, si l'on ferme le terminal, on ferme aussi "virtualbox", processus fils du shell ; mais avec & le processus fils est en arrière plan et l'on peut donc utiliser le shell. | ||
+ | </note> | ||
===Lancer deux sous-shell en parallèle === | ===Lancer deux sous-shell en parallèle === | ||
Il est possible de lancer deux processus en parallèle. | Il est possible de lancer deux processus en parallèle. | ||
Ligne 194: | Ligne 210: | ||
* $SHELLOPTS : où on peut changer les options d'environnement du shell | * $SHELLOPTS : où on peut changer les options d'environnement du shell | ||
* et les droits sont limités. | * et les droits sont limités. | ||
- | =====Redirections et le pipe dans les scripts===== | + | =====Redirections et le pipe ===== |
- | * À savoir : [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-redirection|un tableau des opérateurs de redirection]] | + | * Liste des opératieurs : [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-redirection|un tableau des opérateurs de redirection]] |
- | ====Rappels sur les redirections==== | + | * Exercices dans le terminal, tout est là : [[doc:programmation:shell:chevrons| les chevrons]] |
+ | ==== Redirections : quelques points importants pour les scripts==== | ||
+ | ===Rappels sur les flux === | ||
Les redirections permettent de travailler non pas en se servant du code de retour (qui indique la réussite ou l'échec de l'exécution d'une commande) mais sur les flux.\\ | Les redirections permettent de travailler non pas en se servant du code de retour (qui indique la réussite ou l'échec de l'exécution d'une commande) mais sur les flux.\\ | ||
Un processus unix possède (par défaut) trois voies d'interaction entre le système et l'utilisateur. Une entrée et deux sorties. Chacun de ces "lieux" sont identifiés par un descripteur de fichier. | Un processus unix possède (par défaut) trois voies d'interaction entre le système et l'utilisateur. Une entrée et deux sorties. Chacun de ces "lieux" sont identifiés par un descripteur de fichier. | ||
Ligne 212: | Ligne 230: | ||
le fichier quand il existe et que l'option noclobber (-c) est activée. | le fichier quand il existe et que l'option noclobber (-c) est activée. | ||
</code> | </code> | ||
- | ===Opérateurs d'entrée et de sortie dans les scripts=== | ||
- | **Exercices dans le terminal, tout est là : [[doc:programmation:shell:chevrons| les chevrons]]** | ||
- | ====Usages de la sortie d'erreur dans les scripts==== | + | ===Utilisation de la sortie d'erreur dans les scripts=== |
* La sortie standard d'erreur peut être dirigée vers un fichier en le créant ou en l'écrasant : | * La sortie standard d'erreur peut être dirigée vers un fichier en le créant ou en l'écrasant : | ||
Ligne 272: | Ligne 288: | ||
</code> | </code> | ||
- | ====Utilisation du "text processing" ==== | + | ===Utilisation du "text processing" === |
* Tout est là : [[http://wiki.debian-facile.org/atelier:chantier:les-commandes-join-paste-split-et-nl|http://wiki.debian-facile.org/atelier:chantier:les-commandes-join-paste-split-et-nl]] | * Tout est là : [[http://wiki.debian-facile.org/atelier:chantier:les-commandes-join-paste-split-et-nl|http://wiki.debian-facile.org/atelier:chantier:les-commandes-join-paste-split-et-nl]] | ||