English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Linux shell peut définir des fonctions utilisateur, puis les appeler dans les scripts shell.
Le format de définition des fonctions dans shell est le suivant :
[function] funname [()] { action; [return int;] }
Explication :
1Peuvent être définis avec function fun() ou directement fun() sans aucun paramètre.
2Les paramètres peuvent retourner, et peuvent afficher : return retourne, s'ils ne sont pas utilisés, la valeur de retour de la dernière commande exécutée sera utilisée comme valeur de retour. return suivi de n (0-255
Voici un exemple où une fonction est définie et appelée :
#!/bin/bash # auteur:Site de tutoriel de base # url:fr.oldtoolbag.com demoFun() { echo "C'est ma première fonction shell !" } echo ""-----La fonction commence à s'exécuter-----" demoFun echo ""-----L'exécution de la fonction est terminée-----"
Résultat de la sortie :
-----La fonction commence à s'exécuter----- C'est ma première fonction shell ! -----L'exécution de la fonction est terminée-----
Voici une fonction définie avec une instruction return :
#!/bin/bash # auteur:Site de tutoriel de base # url:fr.oldtoolbag.com funWithReturn() { echo "Cette fonction ajoutera les deux nombres entrés..." echo "Entrez le premier nombre : " read aNum echo "Entrez le deuxième nombre : " read anotherNum echo "Les deux nombres sont respectivement $aNum et $anotherNum !" return $(($aNum+$anotherNum)) } funWithReturn echo "La somme des deux nombres entrés est $? !"
La sortie sera similaire à ce qui suit :
Cette fonction ajoutera les deux nombres entrés... Entrez le premier nombre : 1 Entrez le deuxième nombre : 2 Les deux nombres sont respectivement 1 et 2 ! La somme des deux nombres entrés est 3 !
La valeur de retour de la fonction peut être obtenue après l'appel de la fonction via $?.
Attention : toutes les fonctions doivent être définies avant leur utilisation. Cela signifie que les fonctions doivent être placées dans la partie supérieure du script, jusqu'à ce que l'interpréteur de shell les découvre pour la première fois, elles peuvent être utilisées. L'appel d'une fonction nécessite uniquement son nom.
Dans Shell, lors de l'appel d'une fonction, il est possible de lui passer des paramètres. À l'intérieur du corps de la fonction, les valeurs des paramètres peuvent être obtenues sous la forme de $n, par exemple, $1représente le premier paramètre, $2représente le second paramètre...
Exemple de fonction avec paramètres :
#!/bin/bash # auteur:Site de tutoriel de base # url:fr.oldtoolbag.com funWithParam() { echo "Le premier paramètre est $1 !" echo "Le deuxième paramètre est $2 !" echo "Le dixième paramètre est $10 !" echo "Le dixième paramètre est ${"10} !" echo "Le onzième paramètre est ${"11} !" echo "Le nombre total de paramètres est $# !" echo "Affiche tous les paramètres sous forme de chaîne de caractères $"* !" } funWithParam 1 2 3 4 5 6 7 8 9 34 73
Résultat de la sortie :
Le premier paramètre est 1 ! Le deuxième paramètre est 2 ! Le dixième paramètre est 10 ! Le dixième paramètre est 34 ! Le onzième paramètre est 73 ! Le nombre total de paramètres est 11 ! Affiche tous les paramètres sous forme de chaîne de caractères 1 2 3 4 5 6 7 8 9 34 73 !
Attention, $10 Il est impossible d'obtenir le dixième paramètre, pour obtenir le dixième paramètre, il est nécessaire de ${10}. Lorsque n>=10Lorsque nécessaire, ${n} doit être utilisé pour obtenir le paramètre.
De plus, il existe plusieurs caractères spéciaux pour traiter les paramètres :
Traitement des paramètres | Description |
---|---|
$# | Nombre de paramètres passés au script ou à la fonction |
$* | Affiche tous les paramètres passés au script sous forme d'une seule chaîne |
$$ | ID du processus courant du script |
$! | ID du dernier processus exécuté en arrière-plan |
$@ | Avec $*Identique, mais avec des guillemets lors de son utilisation, et chaque paramètre est retourné dans les guillemets. |
$- | Affiche les options utilisées par Shell, fonction similaire à la commande set. |
$? | Affiche l'état de sortie de la dernière commande. 0 indique qu'il n'y a pas d'erreur, toute autre valeur indique qu'il y a une erreur. |