Vodnik za začetnike v BASH
Dobrodošli v 2. delu serije Vodnik za začetnike po BASH, ki je edinstven po tem, da je edina vadnica za BASH, ki jo je napisal začetnik za začetnike.
Bralci tega priročnika bodo pridobili svoje znanje in upajmo, da bodo do konca lahko napisali nekaj dokaj pametnih scenarijev.
Zadnjič smo pokrivali ustvarite svoj prvi scenarij ki je preprosto prikazal besede "Hello World". Pokriva teme, kot so urejevalniki besedil, kako odpreti terminalsko okno, kam postaviti svoje skripte, kako prikazati besede "Hello World" in nekaj boljših točk na ubežnih znakih, kot so narekovaji ("").
Ta razdelek zajema vhodne parametre. obstajajo drugi vodniki ki poučujejo tovrstne stvari, vendar vse prepogosto skočijo v nekaj precej nizkega nivoja in morda zagotovijo preveč informacij.
Skript parametra doda personalizacijo
V skriptu "Hello World" iz zadnje vadnice je bilo vse zelo statično. Scenarij sploh ni naredil veliko.
Kako bi lahko izboljšali scenarij "Hello World"?
Kaj pa skript, ki pozdravi osebo, ki ga vodi? Namesto "Hello World" bo rekel "Hello Gary", "Hello Tim" ali "Hello Dolly".
Brez zmožnosti sprejemanja vhodnih parametrov bi morali napisati tri skripte "hellogary.sh", "hellotim.sh" in "hellodolly.sh".
Kako ustvariti parameter
Če dovolimo našemu skriptu, da bere vhodne parametre, lahko uporabimo en skript za pozdrav kogar koli.
Če želite to narediti, odprite terminalsko okno (CTRL + ALT + T) in se pomaknite do mape s skripti tako, da vnesete naslednje: (o ukazu cd)
cd skripti
Ustvarite nov skript, imenovan greetme.sh, tako da vnesete naslednje: (o ukazu na dotik)
dotaknite se greetme.sh
Odprite skript v svojem najljubšem urejevalniku tako, da vnesete naslednje: (o nano ukazu)
nano greetme.sh
V nano vnesite naslednje besedilo:
#!/bin/bash
odmeva "zdravo $@"
Pritisnite CTRL in O da shranite datoteko in nato CTRL in X da zaprete datoteko.

Če želite zagnati skript, vnesite naslednje v ukazno vrstico in zamenjajte s svojim imenom.
sh pozdravi me.sh Tim
Če zaženem skript z mojim imenom, se prikažejo besede "Hello Gary".

Prva vrstica ima vrstico #!/bin/bash, ki se uporablja za identifikacijo datoteke kot skripta bash.
Druga vrstica uporablja stavek echo za odmev besede hello, nato pa je tu še čuden zapis $@. (o ukazu echo)
$@ se razširi in prikaže vsak parameter, ki ste ga vnesli skupaj z imenom skripta. Če torej vnesete "sh greetme.sh tim", se prikažejo besede "hello tim". Če ste vnesli "greetme.sh tim smith", bi se prikazale besede "hello tim smith".
Uporaba ukazov Echo
Morda bi bilo lepo, da skript greetme.sh samo pozdravi samo ime. Nihče ne reče: "Zdravo Gary Newell", ko nekoga sreča, lahko pa reče: "Pozdravljeni Gary".
Spremenimo skript tako, da bo uporabljal samo prvi parameter. Odprite skript greetme.sh v nano tako, da vnesete naslednje:
nano greetme.sh
Spremenite skript tako, da se glasi takole:
#!/bin/bash
odmeva "zdravo $1"
Skript shranite s pritiskom na CTRL in O in nato zapustite s pritiskom na CTRL in X

Zaženite skript, kot je prikazano spodaj (zamenjajte ime s svojim):
sh pozdravi me.sh gary newell
Ko zaženete skript, bo preprosto rekel: "Pozdravljeni Gary" (ali upajmo, "zdravo" in kakor koli je vaše ime).

1 za simbolom $ v bistvu pove ukazu echo, uporabite prvi parameter. Če zamenjate $1 z $2, se prikaže "pozdravljeni novi" (ali kakršen koli je vaš priimek). Za polno ime lahko dodate tudi $2 za $1.

Če ga zaženete z več kot enim parametrom, bodo prikazani na mestih, ki ustrezajo vrstnemu redu, v katerem so bili vneseni.

Mimogrede, če bi zamenjali $2 z $3 in zagnali skript samo z dvema parametroma, bi bil izhod preprosto "Pozdravljeni."
Kako prikazati število uporabljenih parametrov
Možno je prikazati in obdelati število dejansko vnesenih parametrov, poznejše vadnice pa vam bodo pokazale, kako uporabiti štetje parametrov za namene preverjanja.
Če želite prikazati število vnesenih parametrov, odprite skript greetme.sh (nano greetme.sh) in spremenite besedilo, kot sledi:
#!/bin/bash
echo "vnesli ste $# imen"
odmeva "zdravo $@"
Pritisnite CTRL in O da shranite skript in CTRL in X za izhod iz nano.

$# v 2. vrstici prikazuje število vnesenih parametrov.
Doslej je bilo vse to novo, a ne zelo uporabno. Kdo potrebuje skript, ki preprosto prikaže "zdravo"?

Izjave Echo vs. Vhodni parametri
Resnična uporaba odmevnih stavkov je zagotoviti uporabniku podroben in smiseln izpis. Če si lahko predstavljate, da želite narediti nekaj zapletenega, kar vključuje resno škrtanje številk in manipulacijo z datotekami/mapo, bi bilo koristno uporabniku prikazati, kaj se dogaja na vsakem koraku način.
Nasprotno pa vhodni parametri naredijo vaš skript interaktiven. Brez vhodnih parametrov bi potrebovali na desetine skriptov, ki bi delali zelo podobne stvari, vendar z nekoliko drugačnimi imeni.
Glede na vse to v mislih obstaja še nekaj uporabnih vhodnih parametrov, ki jih je dobro poznati in jih bom vse vključil v en delček kode.
Odprite svoj skript greetme.sh in ga spremenite na naslednji način:
#!/bin/bash
echo "Ime datoteke: $0"
echo "ID procesa: $$"
odmev ""
echo "vnesli ste $# imen"
odmeva "zdravo $@"
Pritisnite CTRL in O da shranite datoteko in CTRL in X za izstop.

Zdaj zaženite skript (zamenjajte s svojim imenom).
sh pozdravi me.sh
Tokrat skript prikaže naslednje:
Ime datoteke: greetme.sh
ID procesa: 18595
vnesli ste 2 imeni
zdravo gary newell

$0 v prvi vrstici skripta prikazuje ime skripta, ki ga izvajate. Upoštevajte, da je dolar nič in ne dolar o.
$$ v drugi vrstici prikazuje ID procesa skripta, ki ga izvajate. Zakaj je to koristno? Če izvajate skript v ospredju, ga lahko prekličete tako, da preprosto pritisnete CTRL in C. Če ste skript zagnali v ozadju in se je začel vrteti in delati isto stvar znova in znova ali je začel povzročati škodo vašemu sistemu, bi ga morali ubiti.
Če želite uničiti skript, ki se izvaja v ozadju, potrebujete ID procesa skripta. Ali ne bi bilo dobro, če bi skript dal ID procesa kot del svojega izhoda? (o ukazih ps in kill)
Za zaključek...
Nazadnje, preden zaključimo s to temo, je pomembno razpravljati o tem, kam gre rezultat. Vsakič, ko se je skript do zdaj zagnal, je bil rezultat prikazan na zaslonu.
Precej običajno je, da se izhod skripta zapiše v izhodno datoteko. Če želite to narediti, zaženite skript na naslednji način:
sh greetme.sh gary > greetme.log
Simbol > v zgornjem ukazu izpiše besedilo "hello gary" v datoteko z imenom greetme.log.
Vsakič, ko zaženete skript s simbolom >, prepiše vsebino izhodne datoteke. Če želite datoteki dodati, zamenjajte > z >>.
Zdaj bi morali biti sposobni pisati besedilo na zaslon in sprejemati vhodne parametre.