Sissejuhatus Unixi funktsioonidesse

Selles artiklis tutvume mõne Unixi põhifunktsiooniga. Paljud meist võisid juba teada, mis on funktsioonid, kuid lubage mul sellest lühidalt tutvustada. Funktsioon sisaldab juhiste komplekti, mis tuleb täita koodiga, mis on kirjutatud taandeplokki. Need on kasulikud, kui meil on kindel ülesanne, mida programm peab korrapäraste ajavahemike järel korduvalt tegema. Iga kord sama koodi kirjutamine pole ilmselgelt soovitatav, nii et funktsioone kasutades saame koodi hõlpsalt uuesti kasutada ja vajadusel helistada. Vaatame nüüd, kuidas saaksime neid funktsioone määratleda ja rakendada Unix Shelli skriptimise kaudu.

Funktsioonide süntaks Unixis

Funktsioonide loomisel järgitakse põhilist süntaksikoodi järgmiselt. Funktsiooni näidisnäide.

Kood

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

Siin oleme oma esimese funktsiooni sisse kirjutanud kaks kajaväidet. Funktsioonile helistamiseks võime helistada lihtsalt funktsiooni nime järgi.

Väljund

Parameetrite edastamine funktsioonile Unixis

Oleme edukalt teinud lihtsa funktsiooni, kutsunud selle ja täitnud nõutud käsud. Mis siis saab, kui pean kasutaja sisestatud väärtuste kaudu lisama kaks numbrit? Nii näeksime siin, kuidas saaksime funktsiooni argumentidega kirjutada. Põhisüntaks oleks sama. Parameetrilise funktsiooni näide

Kood

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

Väljund

See palub meil sisestada nimi ja soovida neid

Samal viisil saame luua isegi skriptifaili. Kirjutame täiendava funktsiooni kesta skripti sisse ja vaatame, kuidas see töötab.

Kood

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!

Väljund

Märkus. Mõnikord võime skripti sh käivitamisel tõrke saada järgmiselt:

Ainus, mida siin teha tuleb, on faililubade värskendamine.

Saame SH-faili isegi käsu abil täita. /add.sh

Samal viisil saame käsku isegi argumente pakkudes funktsiooni täita. Vaatame, kuidas seda kolme numbri liitmise abil teha saab.

Kood

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

Nüüd saame oma numbrid käsuridadena sisestada ja siis saada vajaliku väljundi.

Mis siis saab, kui me funktsioonile ühtegi argumenti ei edasta?

Ja kui me esitame ainult kaks argumenti?

Muus osas, kas me saame keelpille edasi anda?

Võime isegi oma koodi omada sellisel viisil, et see võib kehtetute argumentide edastamisel vea kajastada. Vaatame allpool, kuidas saaksime paluda kasutajal sisestada argumente, kui käsuridade argumente ei antud üle.

Kood

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

Väljund

Kui me ei anna oma funktsioonile ühtegi argumenti, annab see kaja sinna, kus oleme palunud anda kaks käsurida ja seejärel anda summa väljund. Ta teeb seda, kuna me ei käskinud funktsioonil vea ilmnemisel peatuda. Teisel juhul näeme väljundit, mis annab summa korralikult, ilma vahepealse kajata. Nende Unixi funktsioonide väärtuste tagastamiseks saame kasutada isegi tagasikäsklusi. Tagastamisaruande väärtus salvestatakse dollaris?

Väljund

Kas proovite harjutusena kirjutada funktsiooni, mis puhkeb, kui me argumente ei edasta?

Unixi pesastatud funktsioonid

Nimetades saame aru, et pesastatud funktsioonid on mõeldud funktsiooni funktsiooni määratlemiseks funktsioonis. Vaatame, kuidas seda nüüd teha. Kirjutame selle kesta skripti hõlpsamaks mõistmiseks.

Kood

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!

Väljund

Ülaltoodud näites kutsusime just teise esimese funktsiooni. Kirjutame nüüd funktsiooni ainult esimese funktsiooni sees.

Kood

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!

Millist väljundit te ootate? Kas arvate, et kuvatakse nii esimese kui ka teise funktsiooni üksikasjad?

Väljund

Me näeme selgelt, et Funktsioon ei kutsunud selle sisemist funktsiooni. Mis siin probleemi on?

Meie skripti sees oleme kutsunud ainult esimest funktsiooni. Proovige nüüd helistada ka teisele Funktsioonile. Nagu täheldatud, ei saa me siin funktsiooni ise nimetada. Ülaltoodud koodis tõstsime lisatud koodi esile.

Väljund

Pange tähele, et kaja, mille oleme kirjutanud pärast teise funktsiooni täitmist, on jõudnud iseenesest. Kui proovime kõigepealt helistada teisele Funktsioonile, millele järgneb Esimene?

Väljund

Saame selgelt aru, et seni, kuni peamist / esimest funktsiooni nimetatakse, sisemist funktsiooni ei kutsuta. Kas saate proovida kahe numbri lisamist, kasutades pesastatud funktsioone? (Üks kasutaja väärtuste sisestamiseks ja teine ​​numbrite lisamiseks)

Järeldus

Niisiis saame funktsioone Unixis määratleda. Ja üks minu levinud Unixi eelis oli viga väljundis, mida saab hõlpsasti mõista ja mis aitab meie koodi vastavalt parandada. Proovige neid funktsioone täita ja kasutage ka tagasikäsku. Õppige Unixis õnnelikult.

Soovitatav artikkel

See on olnud Unixi funktsioonide juhend. Siin käsitleme Unixi funktsioonide sissejuhatust ja erinevat tüüpi funktsioone koos süntaksi ja üksikasjalike selgitustega. Lisateavet leiate ka meie muudest soovitatud artiklitest -

  1. Unixi arhitektuur
  2. Unixi käsud
  3. Unixi kasutusviisid
  4. UNIX-i intervjuu küsimused
  5. Juhend Unixi operaatoritele

Kategooria: