Začetni vodnik BASH - Vhodni parametri

Dobrodošli v 2. del vodnika za začetnike za serijo BASH, ki je edinstven v tem, da je edina BASH tutorial, ki jo je napisal začetnik za začetnike.

Bralci tega vodnika bodo zgradili svoje znanje, ko bom gradil svoje znanje in upajmo, da bo konec tega vse, kar bomo lahko napisali nekaj precej pametnih scenarijev.

Prejšnji teden sem zajemal vaš prvi scenarij, ki je preprosto prikazal besede "Hello World". Zajema teme, kot so urejevalniki besedil, kako odpreti terminalsko okno, kje postaviti svoje skripte, prikazati besede »Hello World« in nekaj finih točk o znaku za uhajanje, kot so narekovaje (»«).

Ta teden bom zajemal vhodne parametre. Obstajajo še drugi vodniki, ki poučujejo tovrstno stvar, vendar se mi zdijo, da skočijo na nekaj dokaj nizkih stvari in morda zagotovijo preveč informacij.

Kaj je parameter?

V "Hello World" skriptu iz zadnje vaje je bilo vse zelo statično. Skripta sploh ni storil veliko.

Kako bi lahko izboljšali scenarij "Hello World"?

Kaj pa skript, ki pozdravlja osebo, ki jo vodi? Namesto, da bi rekli "Hello World", bo rekel "Hello Gary", "Hello Tim" ali "Hello Dolly".

Brez sposobnosti sprejemanja vhodnih parametrov bi morali napisati tri skripte "hellogary.sh", "hellotim.sh" in "hellodolly.sh".

S tem, ko našemu skriptu omogočimo branje vhodnih parametrov, lahko uporabimo en skript, da ga pozdravimo.

Če želite to narediti, odprite terminalsko okno (CTRL + ALT + T) in se pomaknite do mape skriptov, tako da vnesete naslednje: ( o ukazu cd )

cd skripte

Ustvarite nov skript, imenovan greetme.sh, tako da vnesete naslednje: ( o ukazu za dotik )

dotaknite greetme.sh

V svojem priljubljenem urejevalniku odprite skript tako, da vnesete naslednje: ( o nano ukazu )

nano greetme.sh

V nano vnesite naslednje besedilo:

#! / bin / bash echo "hello $ @"

Pritisnite CTRL in O, da shranite datoteko, nato pa CTRL in X, da zaprete datoteko.

Če želite zagnati scenarij, v ukazno vrstico zamenjajte z vašim imenom.

sh greetme.sh

Če sem zagnati scenarij z mojim imenom, se prikažejo besede "Hello Gary".

Prva vrstica ima linijo #! / Bin / bash, ki se uporablja za identifikacijo datoteke kot bash skripta.

Druga vrstica uporablja izjavo echo, da izgovarja besedo zdravo in potem je čudna $ @ notacija. ( o ukazu echo )

$ @ Se razširi, da prikaže vsak parameter, ki je bil vnesen skupaj z imenom skripta. Torej, če ste vnesli "sh greetme.sh tim", bodo prikazane besede "hello tim". Če ste vtipkali »greetme.sh tim smith«, bodo prikazane besede »hello tim smith«.

Morda bi bilo lepo, da skript greetme.sh pravkar pozdravi samo ime. Nihče ne reče, "pozdravi Newell", ko me srečajo, bi lahko rekli "zdravo gary", čeprav.

Spremenimo skript, tako da bo uporabil le prvi parameter. Odprite skript greetme.sh v nano, tako da vnesete naslednje:

nano greetme.sh

Spremenite skript tako, da se glasi:

#! / bin / bash echo "hello $ 1"

Shranite skript s pritiskom na CTRL in O in nato zapustite s pritiskom na CTRL in X.

Zaženite skript, kot je prikazano spodaj (zamenjajte moje ime z vašim):

sh greetme.sh gary newell

Ko vodite scenarij, bo preprosto rekel "zdravo gary" (ali upajmo "zdravo" in karkoli se imenuješ.

1 po simbolu $ v bistvu govori ukaz echo, uporabite prvi parameter. Če zamenjate $ 1 z $ 2, se prikaže "Hello newell" (ali karkoli je vaš priimek).

Mimogrede, če ste zamenjali 2 $ s 3 $ in vodili scenarij s samo 2 parametri, bi bil izhod preprosto "Pozdravljeni".

Možno je prikazati in obdelati število dejansko vnesenih parametrov in v kasnejših vadbah bom pokazal, kako uporabljati število parametrov za namene preverjanja.

Če želite prikazati število vnesenih parametrov, odprite skript greetme.sh (nano greetme.sh) in spremenite besedilo na naslednji način:

#! / bin / bash echo "ste vnesli $ # imena" echo "hello $ @"

Pritisnite CTRL in O, da shranite scenarij ter CTRL in X za izhod iz nana.

$ # V 2. vrstici prikaže število vnesenih parametrov.

Do zdaj je bilo vse to novo, a ni zelo koristno. Kdo potrebuje scenarij, ki preprosto prikaže "zdravo"?

Resnična uporaba za izjave o ehu je uporabniku zagotoviti verbalno in smiselno izjavo. Če si lahko predstavljate, da želite narediti nekaj zapletenega, kar vključuje nekaj resnih številčenj in manipulacije z datotekami / mapami, bi bilo koristno, da uporabniku prikažete, kaj se dogaja na vsakem koraku poti.

Nasprotno pa vhodni parametri omogočajo interaktivno pisavo. Brez vhodnih parametrov bi potrebovali desetine skript, vsi pa bi delali zelo podobne stvari, vendar z nekoliko drugačnimi imeni.

Ob vsem tem v mislih obstajajo še drugi koristni vhodni parametri, za katere je dobro vedeti, in vse jih bom vključil v delček kode.

Odprite svoj skript greetme.sh in ga spremenite na naslednji način:

#! / bin / bash echo "Ime datoteke: $ 0" echo "ID procesa: $$" echo "---------------------------- --- "echo" ste vnesli $ # imena "echo" hello $ @ "

Pritisnite CTRL in O, da shranite datoteko in CTRL in X za izhod.

Zdaj zaženite skript (zamenjajte z imenom).

sh greetme.sh

Tokrat scenarij prikazuje naslednje:

Ime datoteke: greetme.sh ID procesa: 18595 ------------------------------ vnesli ste 2 imena hello gary newell

$ 0 v prvi vrstici skripta prikaže ime skripta, ki ga izvajate. Upoštevajte, da je dolar nič in ne dolar o.

$$ v drugi vrstici prikaže id procesa skripta, ki se izvaja. Zakaj je to koristno? Če imate v ospredju zagon skripta, ga lahko prekličete s preprostim pritiskom na CTRL in C. Če ste zagnali skript v ozadju in začeli z zanko in delati isto stvar znova in znova ali začeli povzročati škodo vašemu sistemu, ki ga potrebujete da ga ubiješ.

Če želite ubiti skript, ki se izvaja v ozadju, potrebujete identifikacijsko številko procesa skripta. Ali ne bi bilo dobro, če je scenarij dala procesni identifikator kot del svoje proizvodnje. ( o ukazih ps in kill )

Nazadnje, preden sem končal s to temo, sem hotel razpravljati o tem, kje je proizvodnja. Vsakič, ko je scenarij do zdaj vodil, je bil na zaslonu prikazan rezultat.

Zelo pogosto je, da se skriptni izhod zapisuje v izhodno datoteko. Če želite to narediti, zaženite svoj skript na naslednji način:

sh greetme.sh gary> greetme.log

Simbol> v zgornjem ukazu izpisuje besedilo »hello gary« v datoteko, imenovano greetme.log.

Vsakič, ko zaženete skript s simbolom>, prepiše vsebino izhodne datoteke. Če bi radi dodali v datoteko, zamenjajte> s >>.

Povzetek

Zdaj bi morali biti sposobni pisati besedilo na zaslon in sprejeti vhodne parametre.