Introduction aux fonctions sous Unix
Dans cet article, nous allons découvrir quelques fonctions de base sous Unix. Beaucoup d'entre nous connaissaient peut-être déjà ce que sont les fonctions, mais permettez-moi d'en faire une brève introduction. Une fonction contient un ensemble d'instructions à exécuter par un code écrit à l'intérieur d'un bloc en retrait. Celles-ci sont utiles lorsque nous avons une certaine tâche qu'un programme doit faire à plusieurs reprises pendant des intervalles de temps réguliers. Il n'est évidemment pas recommandé d'écrire le même code à chaque fois, donc en utilisant des fonctions, nous pouvons facilement réutiliser le code et l'appeler chaque fois que nécessaire. Voyons maintenant comment définir et implémenter ces fonctions via les scripts Unix Shell.
Syntaxe des fonctions sous Unix
La création de Functions suit le code de syntaxe de base comme suit. Exemple d'exemple d'une fonction.
Code
First()
(
echo “ First Program for defining functions ”;
echo “ Yayyy! “;
)
Ici, nous avons écrit deux déclarations d'écho dans notre première fonction. Pour appeler la fonction, nous pouvons simplement appeler par le nom de la fonction.
Production
Passer des paramètres à la fonction sous Unix
Nous avons réussi à créer une fonction simple, à l'appeler et à exécuter les commandes dont nous avions besoin. Maintenant, que se passe-t-il si j'ai besoin d'ajouter deux nombres via des valeurs saisies par l'utilisateur? Donc, ici, nous verrions comment nous pouvons écrire une fonction avec des arguments. La syntaxe de base serait la même. Exemple de fonction paramétrée
Code
Second()
(
echo “Enter your name: “;
read name;
echo “Hi $name, have a good day”;
)
Production
Cela nous demandera d'entrer un nom et de leur souhaiter
De la même manière, nous pouvons même créer un fichier script. Écrivons une fonction d'ajout dans un script shell et voyons comment cela fonctionne.
Code
vi add.sh
echo “enter first number: “;
read a;
echo “enter the second number: “;
read b;
sum=$((a+b));
echo “ Result is $sum”;
*********************
Save the file with : wq!
Production
Remarque: Parfois, lors de l'exécution du script sh, nous pouvons obtenir l'erreur sous la forme:
La seule chose à faire ici est de mettre à jour les autorisations de fichier.
Nous pouvons même exécuter le fichier sh en utilisant la commande by. /add.sh
De la même manière, nous pouvons même exécuter une fonction en fournissant des arguments en ligne de commande. Voyons donc comment nous pouvons y parvenir en ajoutant trois chiffres.
Code
(
number1=$1;
number2=$2;
number3=$3;
sum=$((number1+number2+number3));
echo “Sum is $sum”;
)
Maintenant, nous pouvons passer nos nombres en tant qu'arguments de ligne de commande, puis obtenir notre sortie requise.
Et si nous ne transmettons aucun argument à la fonction?
Et, si nous ne donnons que deux arguments?
Sinon, pouvons-nous passer des chaînes?
Nous pouvons même avoir notre code de telle manière qu'il puisse faire écho à une erreur lorsque des arguments invalides sont passés. Ci-dessous, voyons comment demander à l'utilisateur de saisir des arguments si aucun argument de ligne de commande n'est passé.
Code
Add()
(
number1=$1;
number2=$2;
if ( $# -ne 2 ); then
echo “ Enter two numbers to add “;
fi
sum=$((number1+number2));
echo “ Sum is : $sum “;
)
Production
Si nous ne transmettons aucun argument à notre fonction, cela donne notre écho où nous avons demandé de donner deux numéros de ligne de commande et de donner ensuite la sortie de sum. Il le fait, car nous n'avons pas dit à la fonction de s'arrêter si nous rencontrions l'erreur. Dans le deuxième cas, nous pouvons voir la sortie donner correctement la somme sans aucun écho intermédiaire. Nous pouvons même utiliser des commandes de retour pour renvoyer des valeurs pour ces fonctions Unix. La valeur de l'instruction de retour est stockée dans $?
Production
Comme exercice, pouvez-vous essayer d'écrire une fonction qui éclate si nous ne transmettons pas les arguments?
Fonctions imbriquées sous Unix
En nommant, nous pouvons comprendre que les fonctions imbriquées consistent à définir une fonction à l'intérieur d'une fonction. Voyons comment nous pouvons le faire maintenant. Nous écrivons ceci dans un script shell pour une meilleure compréhension.
Code
vi Nested_Function.sh
***** Code Inside the sh Function*******
#!/bin/sh
First()
(
echo “ Inside First Function “;
echo “ Calling the second function below “;
echo “**********”;
Second
echo “**********”;
echo “ After calling Second function “;
)
Second()
(
echo “ Inside Second Function”;
echo “ Done “;
)
First
************************
Save the file with : wq!
Production
Dans l'exemple ci-dessus, nous venons d'appeler la deuxième fonction à l'intérieur de la première. Écrivons maintenant une fonction à l'intérieur de la première fonction uniquement.
Code
vi Nest_Func1.sh
***** Code Inside the sh Function*******
First_One()
(
echo “ Inside the function First_One”;
echo “ Below is the inner function “;
Second_One()
(
echo “ ********** “;
echo “ Inside Inner function”;
echo “ Completed Second Function”;
echo “ ********** “;
)
echo “Done with second example too”;
)
First_One
Second_one
************************
Save the file with : wq!
Maintenant, quelle sortie attendez-vous? Pensez-vous que les détails des première et deuxième fonctions seraient affichés?
Production
Nous pouvons clairement voir que la fonction n'a pas appelé la fonction intérieure à l'intérieur. Alors, quel est le problème ici?
Dans notre script, nous n'avons appelé que la première fonction. Essayez maintenant d'appeler également la deuxième fonction. Comme observé, ici nous ne pourrons pas appeler la fonction seule. Dans le code ci-dessus, nous avons mis en évidence le code ajouté.
Production
Notez que l'écho que nous avons écrit après l'exécution de la deuxième fonction est venu avant lui-même. Maintenant, si nous essayons d'appeler la deuxième fonction en premier, suivie de la première?
Production
Nous pouvons clairement comprendre que tant que la fonction principale / première n'est pas appelée, la fonction interne n'est pas appelée. Comme exercice, pouvez-vous essayer d'ajouter deux nombres en utilisant des fonctions imbriquées? (Un pour entrer les valeurs utilisateur et d'autres pour ajouter les nombres)
Conclusion
C'est ainsi que nous pouvons définir les fonctions sous Unix. Et un avantage majeur sous Unix, j'ai trouvé que l'erreur dans la sortie peut être facilement comprise et peut aider à rectifier notre code en conséquence. Essayez d'exécuter ces fonctions et utilisez également la commande de retour. Bon apprentissage sous Unix.
Article recommandé
Cela a été un guide des fonctions sous Unix. Ici, nous discutons une introduction aux fonctions sous Unix et aux différents types de fonctions ainsi que la syntaxe et l'explication détaillée. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -
- Architecture Unix
- Commandes Unix
- Utilisations d'Unix
- Questions d'entretiens chez UNIX
- Guide des opérateurs Unix