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 [06/06/2014 09:05] Hypathie [Enchaînements de commandes dans les scripts] |
doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie [07/06/2014 07:45] Hypathie [Redirections et le pipe dans les scripts] |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
* Création par **Hypathie** 18/03/2014 | * Création par **Hypathie** 18/03/2014 | ||
* Testé par <Hypathie> le <Juin 2014> | * 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 !)) | + | * 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 !)) |
**Nota : wiki n°4**\\ | **Nota : wiki n°4**\\ | ||
Ligne 114: | Ligne 114: | ||
{ var1=yep ;} | { var1=yep ;} | ||
echo $var1 | echo $var1 | ||
- | echo " " | ||
var3=coucou | var3=coucou | ||
{ var4=yep ; $var4 ;} | { var4=yep ; $var4 ;} | ||
Ligne 122: | Ligne 121: | ||
<code> | <code> | ||
yep | yep | ||
- | + | essai.sh: ligne5: yep : commande introuvable | |
- | essai.sh: ligne6: yep : commande introuvable | + | |
coucou | coucou | ||
</code> | </code> | ||
Ligne 133: | Ligne 131: | ||
(var2=yep ) | (var2=yep ) | ||
echo $var1 $var2 | echo $var1 $var2 | ||
- | echo " " | ||
( var3="au revoir" ; echo $var3 ) | ( var3="au revoir" ; echo $var3 ) | ||
</code> | </code> | ||
Ligne 139: | Ligne 136: | ||
<code> | <code> | ||
coucou | coucou | ||
- | |||
au revoir | au revoir | ||
</code> | </code> | ||
Ligne 166: | Ligne 162: | ||
===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. | ||
+ | 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> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 175: | Ligne 171: | ||
cd /etc/calendar ; ls | cd /etc/calendar ; ls | ||
</code> | </code> | ||
- | Comparez le retour. | + | |
====Le shell restreint ==== | ====Le shell restreint ==== | ||
Ligne 201: | Ligne 197: | ||
* À voir : | * À voir : | ||
* [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-redirection|un tableau des opérateurs de redirection]] | * [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-redirection|un tableau des opérateurs de redirection]] | ||
- | ====Rappels :==== | + | ===Rappels === |
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.\\ | ||
Ligne 217: | Ligne 213: | ||
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 de sortie et opérateurs d'entrée ==== | + | ====Opérateurs opérateurs d'entrée et de sortie dans les scripts==== |
- | * Tout est là : [[doc:programmation:shell:chevrons| les chevrons]] \\ | + | **Exercices dans le terminal, tout est là : [[doc:programmation:shell:chevrons| les chevrons]]** |
- | + | ||
- | ===Opérateurs de sortie dans un script :=== | + | |
- | + | ||
- | <code bash> | + | |
- | #!/bin/bash | + | |
- | # mise en place : | + | |
- | { mkdir ~/ABCD ; cd ABCD ; touch a b c d ; cd ~ ; pwd ;} | + | |
- | + | ||
- | # création de fichier avec " > " : | + | |
- | cd ~/ABCD && > fichier1 && pwd ; cd ~ && pwd && > /home/hypathie/ABCD/fichier2 && pwd && cd ~ && pwd | + | |
- | # espace facultatif avant et après " > " | + | |
- | + | ||
- | # redirection de la sortie de commande vers un fichier : | + | |
- | ls>/home/hypathie/ABCD/recup-ls # espace facultatif avant et après " > " | + | |
- | </code> | + | |
- | + | ||
- | Retour : | + | |
- | <code bash> | + | |
- | /home/hypathie # après cd ~ on est retourné dans le répertoire de l'utilisateur | + | |
- | /home/hypathie/ABCD # après création du fichier1 on est encore dans "ABCD" | + | |
- | /home/hypathie # après cd ~ on est retourné dans le répertoire utilisateur | + | |
- | /home/hypathie # on a créé fichier2 dans "ABCD" depuis le répertoire utilisateur | + | |
- | /home/hypathie | + | |
- | </code> | + | |
- | <note important> | + | |
- | Attention: | + | |
- | Créer un fichier avec > est un bashisme. La méthode universelle est d'utiliser "touch". | + | |
- | Amateurs de magie blanche et noire voir ce fil : [[http://debian-facile.org/viewtopic.php?pid=86634#p86634]] | + | |
- | </note> | + | |
- | + | ||
- | ===Opérateurs d'entrée dans les scripts=== | + | |
- | + | ||
- | <code bash> | + | |
- | < Place, en entrée d'une commande, un contenu. | + | |
- | </code> | + | |
- | <code bash> | + | |
- | cat < /chemin/du/fichier.txt # est un équivalent de cat /chemin/du/fichier.txt | + | |
- | </code> | + | |
- | <code bash> | + | |
- | << Redirige en entrée une série de données. | + | |
- | </code> | + | |
- | On nomme cette redirection "label".\\ Redirection utilisée dans un document en ligne dont on se sert que pour certaines commandes, comme ftp ou cat.\\ Voir : [[http://abs.traduc.org/abs-5.0-fr/ch18.html#heredocref]]\\ | + | |
- | Ne pas confondre avec la commande e2label, voir : [[doc:systeme:e2label]] | + | |
===Usages de la sortie d'erreur dans les scripts=== | ===Usages de la sortie d'erreur dans les scripts=== | ||
Ligne 321: | Ligne 274: | ||
- | ====Un petit exercice sur opérateurs ==== | + | ====Un petit exercice sur opérateurs d'enchaînement et de redirection==== |
Écrire un script qui crée le dossier "ABCD" et 4 fichiers vides (nommés a b c d) ; | Écrire un script qui crée le dossier "ABCD" et 4 fichiers vides (nommés a b c d) ; | ||
qui liste le contenu de "ABCD" et qui inscrit le résultat dans un fichier nommé "ls1" qui sera placé dans "ABCD" ; | qui liste le contenu de "ABCD" et qui inscrit le résultat dans un fichier nommé "ls1" qui sera placé dans "ABCD" ; | ||
Ligne 328: | Ligne 281: | ||
puis une deuxième ligne de texte dans "fichier.txt", en affichant dans le terminal,\\ le nombre de lignes, de mots et d'octets que possède le fichier "fichier.txt" ; | puis une deuxième ligne de texte dans "fichier.txt", en affichant dans le terminal,\\ le nombre de lignes, de mots et d'octets que possède le fichier "fichier.txt" ; | ||
se servir de différentes méthodes tout au long du script pour vérifier\\ au niveau du terminal que chaque commande s'est bien déroulée. | se servir de différentes méthodes tout au long du script pour vérifier\\ au niveau du terminal que chaque commande s'est bien déroulée. | ||
+ | <note important> | ||
+ | Attention: | ||
+ | Créer un fichier avec > est un bashisme. La méthode universelle est d'utiliser "touch". | ||
+ | Amateurs de magie blanche et noire voir ce fil : [[http://debian-facile.org/viewtopic.php?pid=86634#p86634]] | ||
+ | </note> | ||
Bonne lecture ;-) | Bonne lecture ;-) |