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

Prochaine révision
Révision précédente
doc:programmation:shells:fonction [05/01/2015 06:40]
smolski créée
doc:programmation:shells:fonction [23/11/2020 09:52] (Version actuelle)
Hypathie [Définition d'une fonction]
Ligne 1: Ligne 1:
 ====== script bash : Fonctions ====== ====== script bash : Fonctions ======
  
-  * Niveau requis : {{tag>​débutant}}+  ​* Objet : script bash : Fonctions 
 +  ​* Niveau requis : {{tag>​débutant ​avisé}} 
 +  * Commentaires : 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 :    * Suivi : 
-    * Création par [[user>​Hypathie]] 18/​03/​2014 +    * Création par [[user>​Hypathie]] ​le 18/​03/​2014 
-    * Testé par <​Hypathiele <Juin 2014> +    * Testé par [[user>Hypathie]] ​Juin 2014 
-  * 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 !))+  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=142815#p142815 ​| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) 
 + 
 +Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! 
 + 
  
 **Nota : Les autres wiki :** **Nota : Les autres wiki :**
-  * [[atelier:chantier:​debuter-avec-les-scripts-shell-bash]] +  * [[doc:​programmation:shells:​debuter-avec-les-scripts-shell-bash]] 
-  * [[atelier:chantier:​script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]] +  * [[doc:programmation:​shells:​script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]] 
-  * [[atelier:chantier:​script-bash-detail-sur-les-parametres-et-les-boucles|modification de variable et de paramètre]]  +  * [[doc:​programmation:shells:​script-bash-detail-sur-les-parametres-et-les-boucles|modification de variable et de paramètre]]  
-  * [[atelier:chantier:​script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]] +  * [[doc:​programmation:shells:​script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]] 
-  * [[atelier:chantier:​script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] +  * [[doc:​programmation:shells:​script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] 
-  * [[doc:​programmation:​bash:script:​tableaux|script-bash-les-tableaux]]+  * [[doc:​programmation:​shells:​tableaux|script-bash-les-tableaux]]
   * ;-)   * ;-)
   ​   ​
-Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !+
  
 ===== Définition d'une fonction ===== ===== Définition d'une fonction =====
Ligne 57: Ligne 63:
 <​note>​ <​note>​
   * ''​function''​ : c'est la commande ''​function''​ ;   * ''​function''​ : c'est la commande ''​function''​ ;
 +
   * entre les ''​{ }''​ c'est le corps de la fonction ;   * entre les ''​{ }''​ c'est le corps de la fonction ;
 +
   * ne pas oublier l'​espace avant ''​{''​ ;   * ne pas oublier l'​espace avant ''​{''​ ;
 +
   * on y place la ou les commandes exécutées par l'​appel de la fonction; ​   * on y place la ou les commandes exécutées par l'​appel de la fonction; ​
   * l'​appel de la fonction se fait après sa définition; ​   * l'​appel de la fonction se fait après sa définition; ​
Ligne 66: Ligne 75:
   * Exemple :   * Exemple :
  
-<code bash>+<code bash mon-script>
 #!/bin/bash #!/bin/bash
 function f {  function f { 
Ligne 79: Ligne 88:
 </​code>​ </​code>​
  
-<code>+<file config retour de la commande>
 Bonjour tout le monde Bonjour tout le monde
-</code>+</file>
 <​note>​ <​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 '';​}''​ (avec un espace devant '';''​)+Les mots réservés ''​function''​ et ''​}''​ doivent être les premiers d'une commande pour qu'ils soient reconnus.\\ 
 + 
 +Sinon il suffit de mettre '';​}''​ (avec un espace devant '';''​)
 </​note>​ </​note>​
  
   * Syntaxe avec ''​nom-de-la-fonction (){''​ :   * Syntaxe avec ''​nom-de-la-fonction (){''​ :
  
-<code bash>+<code bash mon-script>
 #!/bin/bash #!/bin/bash
 mafonction (){ mafonction (){
Ligne 98: Ligne 109:
 ./​mon-script ./​mon-script
 </​code>​ </​code>​
-<code>+<file config retour de la commande>
 coucou coucou
-</code>+</file>
  
   * Syntaxe proche de C :   * Syntaxe proche de C :
  
-<code bash>+<code bash mon-script>
 #!/bin/bash #!/bin/bash
 mafonction () mafonction ()
Ligne 118: Ligne 129:
 </​note>​ </​note>​
  
-==== Les arguments d'une fonction ====+==== Les arguments ​du script et les paramètres ​d'une fonction ====
  
-  ​*Les appels des arguments d'une fonction sont placés dans le corps de celle-ci\\+<note info> 
 +  * On voit souvent les termes arguments et paramètres comme des synonymes car les arguments passés au script peuvent être récupérés pour être utilisés comme paramètres passés à une/des fonction(s) déclarées et implémentées dans le script. 
 +  * Voyons d'​abord comment passer des paramètres à une fonction du script. 
 +</​note>​ 
 + 
 +  ​*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\\ ​   *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 premier argument est référencée par ''​$1''​\\
   *la valeur du deuxième argument est référencée par ''​$2'',​ etc.\\   *la valeur du deuxième argument est référencée par ''​$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)+  *les paramètres spéciaux ''​$0''​ (Contient le nom du script tel qu'il a été invoqué), ''​$#''​ (Le nombre de paramètres passés au script), $@ (l'​ensemble des arguments, un argument par paramètre) , ''​$*''​ (l'​ensemble des paramètres ​sous la forme d'un seul argument), ''​$?''​ (Le code retour ​de la dernière commande), ''​$$''​ (le PID su shell qui exécute le script), ''​$!''​ (le PID du dernier processus lancé en arrière-plan)
  
-<code bash>+ 
 +<code bash mon-script.sh>
 #!/bin/bash #!/bin/bash
 function f function f
Ligne 132: Ligne 149:
 echo $0 echo $0
 echo $USER echo $USER
-echo $1 $2 $3+echo $3 $1 $2
 echo $# echo $#
 echo $@ echo $@
Ligne 146: Ligne 163:
 ./​mon-script ./​mon-script
 </​code>​ </​code>​
-<code >+<file config retour de la commande>
 ./​mon-script ./​mon-script
 hypathie hypathie
-chez debian ​facile+facile ​chez debian
 3 3
 chez debian facile chez debian facile
 chez debian facile chez debian facile
 +</​file>​
 +
 +<note info>
 +  * Les paramètres de la fonction peuvent être les paramètres passés au script.
 +</​note>​
 +
 +<code bash ParamToScript.sh>​
 +#!/bin/bash
 +function f
 +{
 +echo "​SCRIPT_NAME : " $0
 +echo "USER : " $USER
 +echo "​Script Argument 1 : "$1 "​Script Argument 2 : "$2 "​Script Argument 2 : "$3
 +}
 +f $1 $2 $3 
 </​code>​ </​code>​
  
 +<code user>
 +./​ParamToScript.sh arg1 arg2 arg3
 +</​code>​
  
 +<file config retour de la commande>​
 +SCRIPT_NAME :  ./​ParamToScript.sh
 +USER :  hypathie
 +Script Argument 1 :  \nScript Argument 2 :  \Script Argument 2 : 
 +</​file>​
 ==== La commande interne shift ==== ==== La commande interne shift ====
  
 Cette commande permet de décaler la numérotation des paramètres de position de la fonction Cette commande permet de décaler la numérotation des paramètres de position de la fonction
-<code bash>+<code bash script minipoesie>
 function minipoesie function minipoesie
 { {
Ligne 180: Ligne 220:
 ./​minipoesie ./​minipoesie
 </​code>​ </​code>​
-<code>+<file config retour de la commande>
 nom complet : ./​minipoesie nom complet : ./​minipoesie
    
Ligne 189: Ligne 229:
    facile    facile
      facile      facile
-</code>+</file>
  
 Et voilà, vous devriez maintenant être capable de tout comprendre de l'​exemple de ce lien :  Et voilà, vous devriez maintenant être capable de tout comprendre de l'​exemple de ce lien : 
Ligne 195: Ligne 235:
  
 Et n'​oubliez pas de retourner à la comparaison : Et n'​oubliez pas de retourner à la comparaison :
-  * [[atelier:chantier:script-bash-les-tableaux?&#​se-creuser-un-peu-les-meninges|se creuser un peu les méninges]] !+  * [[doc:programmation:bash:script:tableaux#​se-creuser-un-peu-les-meninges|se creuser un peu les méninges]] !
  
 ==== Fonctions et redirections ==== ==== Fonctions et redirections ====
Ligne 211: Ligne 251:
 Voir le tuto : [[doc:​programmation:​shell:​pipe|Le pipe ou tuyau]] Voir le tuto : [[doc:​programmation:​shell:​pipe|Le pipe ou tuyau]]
  
-<code bash>+<code bash script getip.sh>
 #!/bin/bash #!/bin/bash
 getip (){ getip (){
Ligne 219: Ligne 259:
 </​code>​ </​code>​
 ou ou
-<code bash>+<code bash script getip.sh>
 #!/bin/bash #!/bin/bash
 getip (){ getip (){
Ligne 230: Ligne 270:
 </​code>​ </​code>​
  
-<code+<file config retour de la commande
-          inet adr:​192.168.0.22 ​ Bcast:​192.168.0.255 ​ Masque:​255.255.255.0 +inet adr:​192.168.0.22 ​ Bcast:​192.168.0.255 ​ Masque:​255.255.255.0 
-</code>+</file>
  
 ===== Fonction, variables et paramètres passés au script ==== ===== Fonction, variables et paramètres passés au script ====
Ligne 238: Ligne 278:
 Créer une fonction qui permet d'​afficher une variable et les paramètres passés au script. Créer une fonction qui permet d'​afficher une variable et les paramètres passés au script.
  
-<code bash>+<code bash script essai.sh>
 #!/bin/bash #!/bin/bash
 var=coucou var=coucou
Ligne 255: Ligne 295:
 </​code>​ </​code>​
  
-<code>+<file config retour de la commande>
 coucou coucou
 a b a b
-</code>+</file>
  
 ===== Fonctions et autres commandes ===== ===== Fonctions et autres commandes =====
  
 À savoir : Comme la commande "​exit",​ la commande "​return"​ permet de changer le code de retour, mais contrairement à "​exit",​ return fait sortir de la fonction (arrête l'​exécution des commandes du corps de la fonction), sans arrêter l'​ensemble du programme (script). À savoir : Comme la commande "​exit",​ la commande "​return"​ permet de changer le code de retour, mais contrairement à "​exit",​ return fait sortir de la fonction (arrête l'​exécution des commandes du corps de la fonction), sans arrêter l'​ensemble du programme (script).
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
  
Ligne 315: Ligne 355:
   * Soit le script "​echocolor.sh"​ ci-dessous :   * Soit le script "​echocolor.sh"​ ci-dessous :
  
-<code bash>+<code bash script echocolor.sh>
 # voici des variables affectée des codes couleurs qu'on trouve sur le net # voici des variables affectée des codes couleurs qu'on trouve sur le net
 noir='​\e[0;​30m'​ noir='​\e[0;​30m'​
Ligne 344: Ligne 384:
   * Dans le script "​source.sh"​ ci-dessous, on va se servir de la fonction "​echocolor"​ du script "​echocolor.sh"​ pour coloriser les sorties des commandes.   * Dans le script "​source.sh"​ ci-dessous, on va se servir de la fonction "​echocolor"​ du script "​echocolor.sh"​ pour coloriser les sorties des commandes.
  
-<code bash>+<code bash script source.sh>
 #!/bin/bash #!/bin/bash
 source echocolor.sh ​ # ou .nom_du_script source echocolor.sh ​ # ou .nom_du_script
Ligne 368: Ligne 408:
 OU MIEUX : OU MIEUX :
  
-<code bash>+<code bash script source.sh>
 #!/bin/bash #!/bin/bash
 source echocolor.sh ​ # ou .nom_du_script source echocolor.sh ​ # ou .nom_du_script
doc/programmation/shells/fonction.1420436431.txt.gz · Dernière modification: 05/01/2015 06:40 par smolski

Pied de page des forums

Propulsé par FluxBB