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.
Prochaine révision | Révision précédente | ||
doc:programmation:shell:avancee [30/09/2013 23:59] captnfab créée |
doc:programmation:shell:avancee [24/07/2024 02:12] (Version actuelle) Jean-Pierre Pinson [Boucles et instructions conditionnelles] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
* Commentaires : //Faire des choses compliquées avec votre shell.// | * Commentaires : //Faire des choses compliquées avec votre shell.// | ||
* À savoir : [[:doc:programmation:shell:]] | * À savoir : [[:doc:programmation:shell:]] | ||
- | * Suivi : {{tag>en-chantier à-tester}} | + | * Suivi : |
- | * Création par **captnfab** 30/09/2013 | + | * Création par [[user>captnfab]] le 30/09/2013 |
- | * Testé par <...> le <...> FIXME | + | * Testé par [[user>smolski]] le 01/10/2013 |
- | * 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 : [[http://debian-facile.org/viewtopic.php?pid=68350 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
- | === Nota === | ||
- | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
Ligne 58: | Ligne 56: | ||
Pour exécuter ''commande1'' si ''condition'' est vraie, et ''commande2'' sinon, la syntaxe est la suivante : | Pour exécuter ''commande1'' si ''condition'' est vraie, et ''commande2'' sinon, la syntaxe est la suivante : | ||
- | <code user>if condition; | + | <code>if condition; |
then | then | ||
commande1; | commande1; | ||
Ligne 74: | Ligne 72: | ||
echo 'Je suis dans le faux' | echo 'Je suis dans le faux' | ||
fi</code> | fi</code> | ||
+ | |||
+ | Le copié/collé puis la validation de cette instruction vous donnera : | ||
<code>Je suis dans le vrai.</code> | <code>Je suis dans le vrai.</code> | ||
+ | |||
+ | //Ce qui n'est donc pas un mensonge !// ;-) | ||
D'autres exemples utilisant les conditions prédéfinies : | D'autres exemples utilisant les conditions prédéfinies : | ||
Ligne 96: | Ligne 98: | ||
==== Boucle tant que ''while'' ==== | ==== Boucle tant que ''while'' ==== | ||
- | <code user>while condition; | + | <code>while condition; |
do | do | ||
commande; | commande; | ||
Ligne 105: | Ligne 107: | ||
==== Boucle pour tout ''for'' ==== | ==== Boucle pour tout ''for'' ==== | ||
- | <code user>for i in "les fleurs" "le lapin" "le choux" "la salade" "le staff DF"; | + | <code user>for i in "les fleurs" "le lapin" "le chou" "la salade" "le staff DF"; |
do | do | ||
echo "J'aime $i." | echo "J'aime $i." | ||
done</code> | done</code> | ||
+ | ("in" est un mot-clé que l'on peut traduire par "au sein de") | ||
+ | |||
+ | |||
+ | ==== Sélecteur ''case'' ==== | ||
+ | |||
+ | <code user>read x ; case "$x" in | ||
+ | bonjour) | ||
+ | echo "Bonjour $USER" | ||
+ | ;; | ||
+ | aurevoir) | ||
+ | echo "Au revoir $USER" | ||
+ | ;; | ||
+ | *) | ||
+ | echo "Que voulez-vous dire par '$x' $USER ?" | ||
+ | esac</code> | ||
===== Les fonctions ===== | ===== Les fonctions ===== | ||
+ | |||
+ | La syntaxe à utiliser dans le corps d'une fonction pour en récupérer les arguments est similaire à celle d'un fichier de script.\\ | ||
+ | Pour une explication sur les différentes syntaxes voir : [[doc:programmation:shells:bash-les-differents-caracteres-speciaux#les-fonctions]]\\ | ||
+ | |||
+ | Rappel : | ||
+ | |||
+ | *Pour le reste, le corps d'une fonction se définit de manière assez simple. Notons que les arguments ne sont pas précisés entre parenthèses. | ||
+ | |||
+ | *L'appel de la fonction se fait ensuite comme l'appel d'un programme (cf. dernière ligne.) | ||
+ | |||
+ | <code user>function ma_fonction() | ||
+ | { | ||
+ | echo "Commande initiale : $0 $@" | ||
+ | |||
+ | N=0 | ||
+ | while [ -n "$1" ]; | ||
+ | do | ||
+ | N=$(($N+1)) | ||
+ | echo "Argument $N : $1"; | ||
+ | shift; | ||
+ | done | ||
+ | } | ||
+ | |||
+ | ma_fonction test bla coucou plouf</code> | ||
+ | ===== Quelques liens ===== | ||
+ | |||
+ | Des scripts en cascade commentés en anglais. | ||
+ | |||
+ | La page documentation : | ||
+ | * http://mywiki.wooledge.org/BashGuide | ||
+ | |||
+ | La page scripts : | ||
+ | * http://mywiki.wooledge.org/BashFAQ/ | ||
+ | |||
+ | //Merci //**cthuluh** ! :-) | ||
+ | |||
+ | ===== Références ===== | ||
+ | |||
+ | [[http://abs.traduc.org/abs-fr/|Guide avancé d'écriture des scripts Bash]] |