Vodič za početnike za BASH

Dobrodošli u 2. dio serije Vodič za početnike u BASH-u koji je jedinstven po tome što je jedini BASH tutorial koji je napisao početnik za početnike.

Čitatelji ovog vodiča će steći svoje znanje i nadamo se da će do kraja moći napisati neke prilično pametne skripte.

Zadnji put smo pokrivali stvarajući svoju prvu skriptu koji je jednostavno prikazivao riječi "Hello World". Pokriva teme kao što su uređivači teksta, kako otvoriti prozor terminala, gdje staviti svoje skripte, kako prikazati riječi "Hello World" i neke finije točke na escape znakovima kao što su navodniki ("").

Ovaj odjeljak pokriva ulazne parametre. Tamo su drugi vodiči koji podučavaju ovakve stvari, ali prečesto uskaču u neke stvari prilično niske razine i možda daju previše informacija.

Skripta parametra dodaje personalizaciju

U skripti "Hello World" iz prošlog tutoriala sve je bilo vrlo statično. Scenarij uopće nije napravio puno.

Kako bismo mogli poboljšati scenarij "Hello World"?

Što je sa skriptom koja pozdravlja osobu koja ga pokreće? Umjesto "Hello World" reći će "Hello Gary", "Hello Tim" ili "Hello Dolly".

Bez mogućnosti prihvaćanja ulaznih parametara morali bismo napisati tri skripte "hellogary.sh", "hellotim.sh" i "hellodolly.sh".

Kako stvoriti parametar

Dopuštajući našoj skripti čitanje ulaznih parametara, možemo koristiti jednu skriptu da pozdravimo bilo koga.

Da biste to učinili, otvorite prozor terminala (CTRL + ALT + T) i idite do mape sa skriptama upisivanjem sljedećeg: (o naredbi cd)

cd skripte

Napravite novu skriptu pod nazivom greetme.sh upisivanjem sljedećeg: (o naredbi dodira)

dodir pozdravi me.sh

Otvorite skriptu u svom omiljenom uređivaču upisivanjem sljedećeg: (o nano komandi)

nano pozdravi.sh

Unesite sljedeći tekst unutar nano:

#!/bin/bash
odjek "zdravo $@"

Pritisnite CTRL i O za spremanje datoteke, a zatim CTRL i x za zatvaranje datoteke.

Linux osnovna Bash skripta s parametrima

Za pokretanje skripte unesite sljedeće u naredbeni redak zamijenivši svojim imenom.

sh pozdravi me.sh Tim

Ako pokrenem skriptu sa svojim imenom, ona prikazuje riječi "Hello Gary".

Linux pokreće osnovnu skriptu s parametrima

Prvi red ima #!/bin/bash red koji se koristi za identifikaciju datoteke kao bash skripte.

Drugi red koristi echo izjavu za odjek riječi hello, a zatim tu je čudna oznaka $@. (o naredbi eho)

$@ se proširuje kako bi prikazao svaki parametar koji je unesen zajedno s nazivom skripte. Dakle, ako ste upisali "sh greetme.sh tim", prikazale bi se riječi "hello tim". Ako ste upisali "greetme.sh tim smith" tada bi se prikazale riječi "hello tim smith".

Korištenje naredbi Echo

Možda bi bilo lijepo da skripta greetme.sh samo pozdravi samo ime. Nitko ne kaže, "Zdravo Gary Newell", kada nekoga sretne, ali bi mogli reći, "Zdravo Gary", ipak.

Promijenimo skriptu tako da koristi samo prvi parametar. Otvorite greetme.sh skriptu u nano tako da upišete sljedeće:

nano pozdravi.sh

Promijenite skriptu tako da glasi kako slijedi:

#!/bin/bash
odjek "zdravo $1"

Spremite skriptu pritiskom na CTRL i O a zatim izađite pritiskom na CTRL i X.

Linux Bash skripta s pojedinačnim parametrom

Pokrenite skriptu kao što je prikazano u nastavku (naziv zamijenite svojim):

sh pozdravi me.sh gary newell

Kada pokrenete skriptu, ona će jednostavno reći: "Zdravo Gary" (ili, nadamo se, "zdravo" i kako god da se zoveš).

Linux pokrenite Bash skriptu s jednim parametrom

1 nakon simbola $ u osnovi govori o naredbi echo, koristite prvi parametar. Ako zamijenite $1 s $2, prikazat će se "hello newwell" (ili kako god da je vaše prezime). Također možete dodati $2 nakon $1 da biste dobili puno ime.

Linux Bash skripta s više parametara

Ako ga pokrenete s više od jednog parametra, prikazat će se na mjestima koja odgovaraju redoslijedu kojim su uneseni.

Linux skripta za pokretanje s više parametara

Usput, ako zamijenite $2 s $3 i pokrenete skriptu sa samo 2 parametra, izlaz bi jednostavno bio "Halo".

Kako prikazati broj korištenih parametara

Moguće je prikazati i obrađivati ​​broj stvarno unesenih parametara, a kasniji vodiči će vam pokazati kako koristiti broj parametara u svrhu provjere valjanosti.

Za prikaz broja unesenih parametara otvorite skriptu greetme.sh (nano greetme.sh) i izmijenite tekst na sljedeći način:

#!/bin/bash
echo "unijeli ste $# imena"
odjek "zdravo $@"

Pritisnite CTRL i O za spremanje skripte i CTRL i x za izlaz iz nano.

Parametri brojanja Linux Bash skripte

$# u 2. retku prikazuje broj unesenih parametara.

Do sada je sve ovo bilo novo, ali ne baš korisno. Kome treba skripta koja jednostavno prikazuje "zdravo"?

Linux pokreni parametre za brojanje bash skripte

Echo izjave vs. Ulazni parametri

Prava upotreba echo izjava je pružanje opsežnog i smislenog izlaza korisniku. Ako možete zamisliti da želite učiniti nešto komplicirano što uključuje ozbiljno krckanje brojeva i manipulacije datotekama/mapom, bilo bi korisno prikazati korisniku što se događa u svakom koraku put.

Nasuprot tome, ulazni parametri čine vašu skriptu interaktivnom. Bez ulaznih parametara trebali biste desetke skripti koje rade vrlo slične stvari, ali s malo drugačijim imenima.

Imajući sve ovo na umu, postoje još neki korisni ulazni parametri koje je dobro znati i sve ću ih uključiti u jedan isječak koda.

Otvorite svoju greetme.sh skriptu i izmijenite je na sljedeći način:

#!/bin/bash
echo "Naziv datoteke: $0"
echo "ID procesa: $$"
jeka ""
echo "unijeli ste $# imena"
odjek "zdravo $@"

Pritisnite CTRL i O za spremanje datoteke i CTRL i x izaći.

Dodatne informacije o Linux Bash skripti

Sada pokrenite skriptu (zamijenite svojim imenom).

sh pozdravi me.sh 

Ovaj put skripta prikazuje sljedeće:

Naziv datoteke: greetme.sh
ID procesa: 18595

unijeli ste 2 imena
zdravo gary newell
Linux Bash skripta za pokretanje s dodatnim informacijama

$0 u prvom retku skripte prikazuje naziv skripte koju izvodite. Imajte na umu da je dolar nula, a ne dolar o.

$$ u drugom retku prikazuje ID procesa skripte koju izvodite. Zašto je ovo korisno? Ako izvodite skriptu u prvom planu, možete je otkazati jednostavnim pritiskom CTRL i C. Ako ste pokrenuli skriptu u pozadini i ona se počela vrtjeti u petlji i raditi istu stvar iznova ili iznova ili je počela uzrokovati štetu vašem sustavu, trebali biste je ubiti.

Da biste uništili skriptu koja se izvodi u pozadini, potreban vam je ID procesa skripte. Ne bi li bilo dobro kada bi skripta dala ID procesa kao dio svog izlaza? (o naredbama ps i kill)

Zamotati...

Konačno, prije nego što završimo s ovom temom, važno je raspraviti gdje ide rezultat. Svaki put kad je skripta dosad pokrenuta, rezultat je prikazan na ekranu.

Vrlo je uobičajeno da se izlaz skripte zapisuje u izlaznu datoteku. Da biste to učinili, pokrenite skriptu na sljedeći način:

sh pozdravi me.sh gary > pozdravi me.log

Simbol > u gornjoj naredbi daje tekst "hello gary" u datoteku koja se zove greetme.log.

Svaki put kada pokrenete skriptu sa simbolom > ona prepisuje sadržaj izlazne datoteke. Ako biste radije dodali datoteku, zamijenite > sa >>.

Sada biste trebali moći pisati tekst na zaslon i prihvaćati parametre unosa.