Funkcije v Unixu - Različne vrste funkcij v Unixu s sintakso

Kazalo:

Anonim

Uvod v funkcije v Unixu

V tem članku bomo spoznali nekaj osnovnih funkcij v Unixu. Marsikdo od nas je že morda vedel, kaj so funkcije, vendar naj vas na kratko predstavim. Funkcija vsebuje niz navodil, ki jih je treba izvesti s kodo, zapisano znotraj vdolbinanega bloka. Te so uporabne, kadar imamo določeno nalogo, ki jo mora program v rednih časovnih presledkih večkrat opraviti. Pisanje iste kode vsakič očitno ni priporočljivo, zato lahko s funkcijami kodo enostavno ponovno uporabimo in jo pokličemo, kadar je to potrebno. Poglejmo zdaj, kako lahko te funkcije definiramo in izvajamo s skriptom Unix Shell.

Sintaksa funkcij v Unixu

Ustvarjanje funkcij sledi osnovni sintaksični kodi, kot sledi. Vzorec primera funkcije.

Koda

First()
(
echo “ First Program for defining functions ”;
echo “ Yayyy! “;
)

Tu smo v naši prvi funkciji napisali dve odmevni izjavi. Za klicanje funkcije lahko pokličemo samo po imenu funkcije.

Izhod

Prenos parametrov v funkcijo v Unixu

Uspešno smo naredili preprosto funkcijo, jo poklicali in izvedli ukaze, ki smo jih zahtevali. Zdaj, kaj pa, če moram skozi vnesene vrednosti uporabnika dodati dve številki? Torej, tukaj bi videli, kako lahko zapišemo funkcijo z argumenti. Osnovna skladnja bi bila enaka. Primer parametrizirane funkcije

Koda

Second()
(
echo “Enter your name: “;
read name;
echo “Hi $name, have a good day”;
)

Izhod

To nas bo pozvalo, da vnesemo ime in si ga zaželimo

Na enak način lahko celo izdelamo skriptno datoteko. Napišimo funkcijo dodajanja znotraj skripta lupine in si oglejmo, kako deluje.

Koda

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!

Izhod

Opomba: Včasih med izvajanjem skripta sh lahko dobimo napako kot:

Tukaj je treba storiti samo posodobitev dovoljenj za datoteke.

Datoteko sh lahko celo izvedemo z ukazom. /add.sh

Na enak način lahko celo izvedemo funkcijo z zagotavljanjem argumentov ukazne vrstice. Torej, poglejmo, kako lahko to storimo z dodajanjem treh števil.

Koda

(
number1=$1;
number2=$2;
number3=$3;
sum=$((number1+number2+number3));
echo “Sum is $sum”;
)

Zdaj lahko svoje številke prenesemo kot argumente ukazne vrstice in nato dobimo želeni izhod.

Kaj če ne bomo posredovali nobenih argumentov funkciji?

In, če podamo samo dva argumenta?

Drugače, lahko prenesemo strune?

Lahko imamo celo kodo tako, da lahko pri posredovanju neveljavnih argumentov odkrije napako. Spodaj si poglejmo, kako lahko uporabnika zahtevamo, da vnese argumente, če ni bilo nobenih argumentov ukazne vrstice.

Koda

Add()
(
number1=$1;
number2=$2;
if ( $# -ne 2 ); then
echo “ Enter two numbers to add “;
fi
sum=$((number1+number2));
echo “ Sum is : $sum “;
)

Izhod

Če naši funkciji ne posredujemo nobenega argumenta, daje odmev, kjer smo prosili, da damo dve številki ukazne vrstice in nato damo izhod seštevka. To stori tako, saj nismo rekli Funkciji, naj se ustavi, če naletimo na napako. V drugem primeru lahko vidimo, da rezultat daje vsoto pravilno brez vmesnega odmeva. Za vračanje vrednosti za te funkcije Unix lahko uporabimo celo ukaze za vrnitev. Vrednost v izjavi o vračanju je shranjena v $?

Izhod

Kot vajo lahko poskusite napisati funkcijo, ki izbruhne, če ne bomo posredovali argumentov?

Gnezdene funkcije v Unixu

S poimenovanjem lahko ugotovimo, da gnezdene funkcije pomenijo določitev funkcije znotraj funkcije. Poglejmo, kako lahko to storimo zdaj. To pišemo znotraj skripta lupine za lažje razumevanje.

Koda

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!

Izhod

V zgornjem primeru smo ravno imenovali drugo funkcijo znotraj prve. Zdaj napišemo funkcijo samo znotraj prve funkcije.

Koda

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!

Kakšen rezultat pričakujete zdaj? Ali menite, da bosta prikazani obe podrobnosti prve in druge funkcije?

Izhod

Jasno vidimo, da funkcija ni poklicala notranje funkcije v njej. Kaj je tu problem?

Znotraj našega scenarija smo poklicali samo prvo funkcijo. Zdaj poskusite poklicati tudi drugo funkcijo. Kot opazimo, tukaj funkcije ne bomo mogli sam poklicati. V zgornji kodi smo poudarili dodano kodo.

Izhod

Opazite, da je odmev, ki smo ga napisali po drugi funkciji, že pred seboj. Zdaj, če poskusimo najprej poklicati drugo funkcijo, ki ji sledi prva?

Izhod

Jasno lahko razumemo, da dokler se ne pokliče glavna / prva funkcija, notranja funkcija ni poklicana. Lahko poskusite seštevanje dveh števil z uporabo ugnezdenih funkcij? (Ena za vnos uporabniških vrednosti in druga za dodajanje številk)

Zaključek

Tako lahko v Unixu definiramo funkcije. In ena velika prednost v Unixu, ki sem jo ugotovil, je bila napaka v izhodu, ki jo je enostavno razumeti in lahko pomaga pri odpravi naše kode. Poskusite izvršiti te funkcije in uporabite tudi ukaz return. Srečno se učite v Unixu.

Priporočeni članek

To je vodnik za funkcije v Unixu. Tukaj razpravljamo o uvodu funkcij v Unixu in različnih vrstah funkcij, skupaj s sintaksi in podrobnimi razlagami. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. Unix arhitektura
  2. Unix ukazi
  3. Uporabe Unixa
  4. Vprašanja za UNIX intervju
  5. Vodnik za operaterje Unixa