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 -
- Unix arhitektura
- Unix ukazi
- Uporabe Unixa
- Vprašanja za UNIX intervju
- Vodnik za operaterje Unixa