Vodič za početnike BASH - Ulazni parametri

Dobrodošli u 2. dio Vodiča za početnike BASH seriji koja je jedinstvena po tome što je to jedini tutorijal BASH koji je napisao početnik za početnike.

Čitači ovog vodiča će sagraditi svoje znanje dok sam ja sagradio svoje znanje i nadam se da ćemo do kraja toga moći napisati neke prilično pametne skripte.

Prošle nedelje sam pokrivao stvaranje prvog scenarija koji je jednostavno pokazao riječi "Hello World". On obuhvata teme kao što su uređivači teksta, kako otvoriti prozor terminala, gdje će se postaviti tvoje skripte, kako se prikažu riječi "Hello World" i neke finije tačke na znakovima za izbjegavanje kao što su citati ("").

Ove nedelje ću pokriti ulazne parametre. Postoje i drugi vodiči koji predaju ovakvu vrstu stvari, ali smatram da se skaču na neke prilično niske stvari i možda pruže previše informacija.

Šta je parametar?

U "Hello World" skriptu iz poslednjeg tutoriala bilo je sve vrlo statično. Scenarista uopšte nije mnogo učinio.

Kako možemo poboljšati scenario "Hello World"?

Šta je sa skriptom koja pozdravi osobu koja ga vodi? Umjesto da kažete "Hello World" će reći "Hello Gary", "Hello Tim" ili "Hello Dolly".

Bez mogućnosti prihvatanja ulaznih parametara trebali bi napisati tri skripte "hellogary.sh", "hellotim.sh" i "hellodolly.sh".

Dopuštajući našoj skripti da pročita ulazne parametre, možemo da koristimo jednu skriptu da pozovemo bilo koga.

Da biste to uradili, otvorite prozor terminala (CTRL + ALT + T) i krenite u folder skripti upisivanjem sledećeg: ( o cd command )

cd skripte

Kreirajte novu skriptu pod nazivom greetme.sh tako što ćete uneti sledeće: ( o komandi dodirom )

touch greetme.sh

Otvorite skriptu u svom omiljenom editoru tako što ćete uneti sledeće: ( o nano komandi )

nano greetme.sh

Unesite sljedeći tekst unutar nano-a:

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

Pritisnite CTRL i O da biste sačuvali datoteku, a zatim CTRL i X da biste zatvorili datoteku.

Da biste pokrenuli skriptu, unesite sledeće u komandnu liniju koja zamenjuje vaše ime.

sh greetme.sh

Ako pokrenem scenario sa svojim imenom, prikazuje se riječi "Hello Gary".

Prva linija ima liniju #! / Bin / bash koja se koristi za identifikaciju datoteke kao bash skripta.

Druga linija koristi echo izvod za ponovnu riječ zdravo, a tu je i čudna $ @ notacija. ( o komandi eho )

$ @ Se širi da prikaže svaki parametar koji je unet zajedno sa nazivom skripte. Dakle, ako ste otkucali "sh greetme.sh tim", biće prikazane reči "hello tim". Ako ste otkucali "greetme.sh tim smith" onda bi se prikazale reči "hello tim smith".

Možda bi bilo lepo da greetme.sh skripta samo pozdravi koristeći samo ime. Niko ne kaže "hello gary newell" kada me upoznaju, možda bi rekli "pozdrav".

Hajde da promenimo skriptu tako da samo koristi prvi parametar. Otvorite skriptu greetme.sh u nanu ukucavanjem sledećeg:

nano greetme.sh

Promenite skriptu tako da glasi na sledeći način:

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

Sačuvajte skriptu pritiskom na CTRL i O, a zatim izađite pritiskom na CTRL i X.

Pokrenite skriptu kao što je prikazano ispod (zamenite moje ime sa svojim):

sh greetme.sh gary newell

Kada pokrenete scenario, jednostavno ćete reći "zdravo Gary" (ili nadam se "zdravo" i kako god da se zovete.

1 po simbolu $ u osnovi kaže komandu echo, koristite prvi parametar. Ako zamenite $ 1 sa $ 2, onda će se prikazati "hello newell" (ili šta god da je vaše prezime).

Usput, ako ste zamenili $ 2 sa $ 3 i izvršili skriptu sa samo 2 parametra, izlaz bi jednostavno bio "Zdravo".

Moguće je prikazati i upravljati brojem parametara koji su ustvari uneti i na kasnijim tutorijalima pokazaću kako koristiti broj parametara za svrhe validacije.

Da biste prikazali broj unetih parametara otvorite greetme.sh skriptu (nano greetme.sh) i izmenite tekst na sledeći način:

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

Pritisnite CTRL i O da biste sačuvali skriptu i CTRL i X da izađete iz nano-a.

$ # Na 2. redu prikazuje broj unetih parametara.

Do sada je sve ovo bilo novo, ali nije bilo korisno. Kome je potrebna skripta koja jednostavno prikazuje "zdravo"?

Prava upotreba za eho izjave je da korisniku obezbedi verbalni i značajan izlaz. Ako možete zamisliti da želite nešto komplikovano, što podrazumijeva ozbiljan broj haringa i manipulaciju fajlovima / fasciklama, bilo bi korisno prikazati korisniku šta se događa na svakom koraku puta.

Nasuprot tome, ulazni parametri čine vašu skriptu interaktivnom. Bez ulaznih parametara potrebno je desetine skripte koje rade vrlo slične stvari, ali sa malo drugačijim imenima.

Imajući sve ovo na umu postoje još neki korisni ulazni parametri za koje je dobra ideja znati i sve ću ih uključiti u jedan fragment koda.

Otvorite svoju greetme.sh skriptu i izmenite je na sledeći način:

#! / bin / bash echo "Filename: $ 0" echo "ID procesa: $$" echo "---------------------------- --- "echo" uneli ste $ # imena "echo" hello $ @ "

Pritisnite CTRL i O da biste sačuvali datoteku i CTRL i X da izađete.

Sada pokrenite skriptu (zamijenite svojim imenom).

sh greetme.sh

Ovaj put scenario prikazuje sledeće:

Filename: greetme.sh ID procesa: 18595 ------------------------------ uneli ste 2 imena hello gary newell

$ 0 na prvoj liniji skripte prikazuje ime skripta koji pokrećete. Imajte na umu da je nula dolara a ne dolar o.

$$ na drugoj liniji prikazuje procesni broj skripte koju pokrećete. Zašto je to korisno? Ako pokrenete skriptu u prvom planu, možete ga otkazati jednostavnim pritiskom na CTRL i C. Ako ste pokrenuli skriptu u pozadini i počeli su da se kucaju i radi istu stvar iznova i iznova ili počinju da izazivaju oštećenje vašeg sistema, potrebno je da ga ubije.

Da biste ubili skriptu koja se pokreće u pozadini, potrebno je id procesa skripte. Zar ne bi bilo dobro ako je scenario dala proces id kao dio svog izlaza. ( o ps i ubiti komande )

Na kraju, pre nego što završim sa ovom temom želim da raspravljam o tome gde se nalazi izlaz. Svaki put kada se scenario pokreće, ekran je prikazan na ekranu.

Veoma je često da se izlaz skripta upiše u izlaznu datoteku. Da biste to uradili, pokrenite svoju skriptu na sledeći način:

sh greetme.sh gary> greetme.log

Simbol u gornjoj komandi izlazi tekst "hello gary" u datoteku nazvanu greetme.log.

Svaki put kada pokrenete skriptu pomoću simbola> prepisuje sadržaj izlazne datoteke. Ako želite da dodate datoteku zamijenite> sa >>.

Sažetak

Sada bi trebali da pišete tekst na ekran i prihvatite ulazne parametre.