Ülevaade silmuste skriptimisest Loop

Shell Scriptingi silmuse jaoks ütleme, et kui tahame ülesannet või toimingut korduvalt täita, võime kirjutada sama koodi mitu korda, mis on aeganõudev ülesanne ja pole ka tõhus. Seda tüüpi stsenaariumide vältimiseks võime programmeerimiskeeles kasutada silmuseid nagu loop. Niisiis, kui loop kasutatakse konkreetse ülesande täitmiseks, nagu liitmine / korrutamine või mõni muu toiming teatud arv kordi, kuni lõpetamise tingimus on täidetud üheski opsüsteemis. Me ei pea sama koodi uuesti ja uuesti kirjutama, kasutades ahelat.

Silmuse süntaks

Loopi koorega skriptimise süntaksit saab kirjeldada erinevalt järgmiselt:

1. Esimene süntaksi meetod

for var in list
do
command1
command2
done

Ülaltoodud näites on meil eelmääratletud märksõnad või sisseehitatud märksõnad nagu näiteks teha, teha, teha ja sisse lülitada. Seevastu loend on muutujate loend või sõnade loend või numbrite loend ja var on muutuja nimi selle iteratsiooni ajal. Kui loendit ei esitata, võtab bash positsioonilise parameetri, mille me koorest edasi andsime. Ülaltoodud silmuse korral täidab see kõiki käske, mis on tehtud toimingu ja tehtud vahel n korda, kus n on loendi suurus. Näiteks kui loendi suurus on 5, numbritega 1 kuni 5, siis esimese iteratsiooni ajal salvestatakse 1 var-is ja var-ga seotud toiminguid teeb silmuse korpus, kus käsud asuvad.

2. Teine süntaksi meetod

for ( ( expr1; expr2; expr3 ))
do
command1
command2
….
done

Ülaltoodud süntaksis sarnaneb see süntaks sünteeksiga c programmeerimiskeeles silmuse süntaksiga, kui vaatleme seda. Silmuse jaoks on kolm avaldist, kus esimene avaldis on initsialiseerimiseks, teine ​​tingimuslikuks kontrollimiseks ja kolmas iteraatori värskendamiseks. Ülaltoodud ahela täitmine algab niimoodi, enne kui alustatakse esimese iteratsiooni expr1 käivitamine, mis tähendab, et initsialiseerimine tehakse pärast seda, kui toimingud / käsud tehtud ja tehtud vahel tehakse iteratiivselt, kuni expr2 osutub tõeseks ja pärast iga iteratsiooni expr3 värskendab iteraatori väärtus (loendur), nii et toimingud viiakse läbi loendi, massiivi või stringi järgmise elemendi või väärtusega.

Voodiagramm - koore skriptimisel kasutatava silmuse jaoks

Vaatleme silmuse näidet ja arutame selle voolu vooskeemi abil.

for filename in *.dat
do
echo cp $fname orig_$fname
done

Ülaltoodud vooskeemil selgitame silmuse voogu, mis iteereerub failinimede loendi kohal ja voos on neli etappi, näiteks protsessi voog, muutuv väärtus, protsess ja etapp. Protsessivoolus selgitatakse, millal for-loop käivitub, iteraatori väärtus, kontrollides tingimust, kas see on täidetud, siis protsess käivitatakse, vastasel juhul lõpetage protsess. Muutuva väärtuse korral iteratsiooniga iteratsiooni abil saame sinna failinime, näiteks textfile.dat, ja protsessi käigus käivitab ta kajaloendi, kus see kuvab stdout-il vana failinime ja uue failinimega koopiaväljavõtte. Niisiis, see on silmusvoog, mis itreerib sisendfailinimede loendi kohal.

Väljund:

Kuidas Loop Shelli skriptimisel töötab?

Loopi koorega skript toimib järgmisel viisil, kui kest näeb märksõna, kui ta teab, et ta peab korrata käskude komplekti üks kord iga loendi üksuse jaoks. Iga kord, kui iteratsioon jookseb, omistatakse loendis üksusele muutuja var ja töötletakse var enne käskude lisamist, mis asuvad silmustes toimingu tegemise ja teostamise vahel, enne kui liigute loendi järgmisele üksusele või järgmisele iteratsioonile. Vari väärtusele pääseme juurde enne muutujat $, nii et kui skript töötleb seda, asendab var selle väärtuse.

Näide:

for filename in *.txt
do
ls filename
done

Ülaltoodud programmi kaudu saadame .txt-failide loendi sisendina sisendina. Muutuja nimi on failinimi, kuhu .txt-fail talletab ja töötleb seejärel failinime, loetledes .txt-faili failinime ja seejärel sama protsess kordub, kuni kogu .txt-failide töötlemine on lõpetatud.

Väljund:

Silmuse näited

Siiani oleme arutanud, kuidas loop töötab keskskriptis ja erinevates süntaksides. Vaatame nüüd mõnda näidet ja neid läbi vaadates ning selgitame iga näidet selle toimimisest

Näide nr 1

Andke meile silmuse sisendina kasutatavate staatiliste väärtuste loend ja kuidas see käivitub, näeme järgmiselt:

for a day in Fri Thu Wed Tue Mon
do
echo “Todays day is $day”
done

Ülaltoodud näites ei tohiks me sisendväärtusi edastada, kuna eraldaja, kui me selle ületame, on eraldaja ka selline väärtus nagu “reede” ja me ei tohiks väärtusi loetleda, kasutades kahekohalisi jutumärke “, kui edastame need kahekordsete jutumärkidega, shelliskript käsitleb kõiki väärtusi ühe väärtusena.

Näide o / p: tänane päev on: Reede Nel teisipäev esmaspäev (kui kasutame kahekordseid jutumärke)

Väljund:

Näide 2

Vaatame veel ühte näidet, kus me kasutame enne sisendiloendit allpool:

Month = “Jan Feb Mar Apr May Jun”
for mon in $Month
do
echo “Month is $mon”
done

Ülaltoodud näites teostame sama silmuse täitmise nagu ülaltoodud näites, kuid sisestusloendi lugemine toimub märksõna "in" asemel. Kestas skriptimisel peavad kõik muutujad olema esitatud jutumärkides, kuid on mõned erandid, näiteks kui kasutame silmuserea jaoks kahekordseid tsitaate ülaosas $ kuu, siis käsitletakse terveid sõnu ühe reana. Seega peame selle eest hoolt kandma.

Väljund:

Näide 3

Nüüd kirjutame silmuses ilma sisendiloendita loop-avalduses, selle asemel võtab sisend positsioonilistest argumentidest skripti ja näitesse nagu allpool:

Kestkem skripti nimi nagu example.sh ja selle sisu allpool:

for num
do
echo “Number is $num”
done
./sample.sh 1 2 3 4 5

Ülaltoodud näites antakse sisend silmuse jaoks skriptile esitatud argumentide loendist, nii et iga argumendi jaoks töötleb see kõiki käske ja kuvab väljundi, kuni kõik argumendid korratakse.

Väljund:

Järeldus - kesta skriptimise jaoks

Lõpuks on kõik seotud kesta skriptimisega. Oleme arutanud, mis on silmus koore skriptimisel, silmuse süntaksil, selle vooskeem selgitab silmuse voogu, kuidas silmus töötab koorega ja silmuse koore skriptimise näiteid. Loodan, et saate silmuse kohta hästi aru, kuidas seda koore skriptimisel kasutada ja kuidas seda pärast selle artikli lugemist käivitada.

Soovitatavad artiklid

See on juhend skriptimise jaoks silmuse jaoks. Siin käsitleme sissejuhatust, kuidas silmus töötab kesta skriptimisel, vooskeem ja silmuse näide. Lisateavet leiate ka meie muudest soovitatud artiklitest -

  1. Silmused R
  2. Spark SQL Dataframe
  3. Mitmemõõtmeline andmebaas
  4. Andmete visualiseerimise eelised

Kategooria: