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.

Osnovni skript Bash za Linux s parametri

Č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".

Linux zažene osnovni skript s parametri

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

Skript Linux Bash s posameznim parametrom

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).

Linux zažene skript Bash z enim parametrom

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.

Skript Linux Bash z več parametri

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

Skript za zagon Linuxa z več parametri

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.

Parametri štetja skripta Linux Bash

$# 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"?

Linux zažene parametre za štetje skripta bash

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.

Dodatne informacije o skriptu Linux Bash

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
Skript za zagon Linux Bash z dodatnimi informacijami

$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.