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:debuter-avec-les-scripts-shell-bash [03/06/2014 16:43] Hypathie [H) Les tableaux] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 17:14] Hypathie [Apprendre à rédiger des scripts sous bash] |
||
---|---|---|---|
Ligne 10: | Ligne 10: | ||
* 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 !)) FIXME | ||
- | **Nota :** | + | **Nota : wiki n°1** |
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 300: | Ligne 300: | ||
- | |||
- | |||
- | |||
- | |||
- | =====I ) Les fonctions===== | ||
- | |||
- | |||
- | ====1) Définition d'une fonction==== | ||
- | Le shell bash permet plusieurs syntaxes pour définir une fonction.\\ | ||
- | Il faut utiliser le mot réservé **function** : | ||
- | |||
- | *syntaxe 1 : | ||
- | <code> | ||
- | function nom-de-la-fonction | ||
- | { | ||
- | suite-de-commande | ||
- | } | ||
- | nom-de-la-fonction | ||
- | </code> | ||
- | |||
- | <note> | ||
- | *entre les { } c'est le corps de la fonction ; | ||
- | * on y place la ou les commandes exécuter par l'appel de la fonction; | ||
- | * l'appel de la fonction se fait après sa définition; | ||
- | * c'est le fait de mentionner le nom de la fonction qui l'appelle ou permet d'exécuter les commandes du corps de la fonction. | ||
- | </note> | ||
- | *Exemple : | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | function f # on peut ajouter des parenthèse après le nom ; function f() | ||
- | { | ||
- | echo "Bonjour tout le monde" | ||
- | } | ||
- | f # retour : Bonjour tout le monde | ||
- | </code> | ||
- | |||
- | <note> | ||
- | Les mots réservés **function** et **}** doivent être les premiers d'une commande pour qu'ils soient reconnus.\\ Sinon il suffit de mettre **;**avant **}** (avec un espace devant **;**) | ||
- | </note> | ||
- | |||
- | *syntaxe 2 : | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | function f | ||
- | { echo "coucou" ;} | ||
- | f # retour : coucou | ||
- | </code> | ||
- | *syntaxe 3 : proche de c | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | function f { | ||
- | echo hello | ||
- | } | ||
- | f # retour : Hello | ||
- | </code> | ||
- | |||
- | ====2) Les arguments d'une fonction ==== | ||
- | |||
- | *Les appels des arguments d'une fonction sont placés dans le corps de celle-ci\\ | ||
- | *Et les arguments sont placés de gauche à droite et du premier au dernier, à côté du nom d'appel de la fonction\\ | ||
- | *la valeur du premier argument est référencée par $1\\ | ||
- | *la valeur du deuxième argument est référencée per $2, etc.\\ | ||
- | *les paramètres spéciaux $0 (nom programme), $# (nombre de paramètre), $@ (tous les paramètres) , $* (chacun de tous les paramètres), $? (valeur de retour du programme) | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | function f | ||
- | { | ||
- | echo $0 | ||
- | echo $USER | ||
- | echo $1 $2 $3 | ||
- | echo $# | ||
- | echo $@ | ||
- | echo $* | ||
- | } | ||
- | f chez debian facile #chez : premier argument | ||
- | #debian : deuxième argument | ||
- | #facile : troisième argument | ||
- | | ||
- | </code> | ||
- | Retour | ||
- | <code bash> | ||
- | /home/hypathie/MesScripts/script.fct | ||
- | hypathie | ||
- | chez debian facile | ||
- | 3 | ||
- | chez debian facile | ||
- | chez debian facile | ||
- | </code> | ||
- | ==== La commande interne shift ==== | ||
- | Cette commande permet de décaler la numérotation des paramètres de position de la fonction | ||
- | <code> | ||
- | #!/bin/bash | ||
- | function minipoesie | ||
- | { | ||
- | echo "nom complet : $0" | ||
- | echo " " | ||
- | echo "$*" # avant 'shift 1' | ||
- | shift 1 (l'argument 1 est "chez") | ||
- | echo "$*" # après 'shift 1' | ||
- | echo "$*" # avant 'shift 2' | ||
- | shift 2 (l'argument 1 est "debian") | ||
- | echo -e "\t$*" # après 'shift 2' | ||
- | echo -e "\t $*" # avant 'shift 3' | ||
- | shift 3 | ||
- | echo -e "\t $*" # après 'shift 3' | ||
- | } | ||
- | minipoesie hypathie chez debian facile | ||
- | </code> | ||
- | |||
- | retour | ||
- | |||
- | <code> | ||
- | nom complet : /home/hypathie/MesScripts/minipoesie | ||
- | |||
- | hypathie chez debian facile | ||
- | chez debian facile | ||
- | chez debian facile | ||
- | facile | ||
- | facile | ||
- | facile | ||
- | </code> | ||
- | |||
- | Et voilà, vous devriez maintenant être capable de tout comprendre de l'exemple de ces liens: ;-) | ||
- | * [[doc:programmation:shell:scripts#recuperation-des-arguments|Rédaction de scripts Shell : récupération des arguments]] | ||
- | * [[doc:programmation:shell:avancee#les-fonctions|Fonctionnalités avancées du Shell : Les fonctions]] | ||