Sprievodca pre začiatočníkov na BASH - vstupné parametre

Vitajte v 2. časti príručky pre začínajúcich pracovníkov k sérii BASH, ktorá je unikátna v tom, že je to jediný tutoriál BASH napísaný začiatočníkom pre začiatočníkov.

Čitatelia tejto príručky budovať svoje vedomosti, keď budem môj vedomosti a dúfam, že do konca toho všetkého budeme môcť napísať nejaké dosť chytré skripty.

Minulý týždeň som sa týkal vytvorenia prvého skriptu, ktorý jednoducho zobrazil slová "Hello World". Zahŕňa také témy, ako sú textové editory, ako otvoriť okno terminálu, kde umiestniť svoje skripty, ako zobraziť slová "Hello World" a niektoré jemnejšie body na útekových znakoch, ako sú citáty ("").

Tento týždeň sa budem zaoberať vstupnými parametrami. Existujú aj iní sprievodcovia, ktorí učia takéto veci, ale zisťujem, že skočia do nejakej pomerne nízkej úrovne a možno poskytujú príliš veľa informácií.

Čo je to parameter?

V skripte "Hello World" z posledného tutoriálu to bolo veľmi statické. Skript v skutočnosti moc neurobil.

Ako by sme mohli zlepšiť skript "Hello World"?

A čo skript, ktorý pozdravuje osobu, ktorá ju spúšťa? Namiesto toho, aby hovoril "Hello World", povie "Hello Gary", "Hello Tim" alebo "Hello Dolly".

Bez schopnosti akceptovať vstupné parametre by sme museli napísať tri skripty "hellogary.sh", "hellotim.sh" a "hellodolly.sh".

Povolením nášho skriptu na čítanie vstupných parametrov môžeme použiť jeden skript, aby sme pozdravili niekoho.

Ak to chcete urobiť, otvorte okno terminálu (CTRL + ALT + T) a prejdite do priečinka skripty zadaním nasledujúceho: ( o príkaze cd )

cd skripty

Vytvorte nový skript s názvom greetme.sh zadaním nasledujúceho: ( o dotykovom príkaze )

touch greetme.sh

Otvorte skript vo vašom obľúbenom editore zadaním nasledujúceho: ( o príkaze nano )

nano greetme.sh

Do nano zadajte nasledujúci text:

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

Stlačením klávesov CTRL a O súbor uložíte a CTRL a X zatvoríte súbor.

Ak chcete skript spustiť, do príkazového riadka nahraďte nasledujúci text.

sh greetme.sh

Ak spustím skript s mojím menom, zobrazí sa slová "Hello Gary".

Prvý riadok obsahuje riadku #! / Bin / bash, ktorá sa používa na identifikáciu súboru ako bash skript.

Druhý riadok používa vyhlásenie ozveny, aby sa ozvalo slovo hello a potom tu je zvláštny zápis @ @. ( o príkazu echo )

$ @ Sa rozbalí tak, aby sa zobrazil každý zadaný parameter spolu s názvom skriptu. Takže ak ste zadali "sh greetme.sh tim", zobrazí sa slová "hello tim". Ak ste zadali "greetme.sh tim smith", zobrazí sa slová "hello tim smith".

Mohlo by byť pekné, keby skript greetme.sh len povedal ahoj používať len krstné meno. Nikto nehovorí "ahoj gary newell", keď sa stretnú s mnou, mohli by povedať "ahoj gary" hoci.

Zmeňme skript tak, aby používal len prvý parameter. Otvorte skript greetme.sh v nano zadaním nasledujúceho:

nano greetme.sh

Zmeňte skript tak, aby znie takto:

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

Uložte skript stlačením klávesov CTRL a O a potom ukončíte klávesy CTRL a X.

Spustite skript ako je uvedené nižšie (nahraďte moje meno s vaším):

sh greetme.sh gary newell

Keď spustíte skript, jednoducho to povedie "hello gary" (alebo dúfajme, že "ahoj" a aké je vaše meno.

Symbol 1 po symbole $ v podstate hovorí príkazu echo, použite prvý parameter. Ak nahradíte $ 1 za $ 2, zobrazí sa "hello newell" (alebo aké je vaše priezvisko).

Mimochodom, ak ste vymenili $ 2 za $ 3 a spustili ste skript len ​​s dvoma parametrami, výstup by bol jednoducho "Hello".

Je možné zobraziť a zvládnuť počet skutočne zadaných parametrov av neskorších návodoch ukážem, ako používať počet parametrov na účely validácie.

Ak chcete zobraziť počet zadaných parametrov, otvorte skript greetme.sh (nano greetme.sh) a zmeňte text nasledovne:

#! / bin / bash echo "ste zadali $ # mená" echo "ahoj $ @"

Stlačením klávesov CTRL a O uložte skript a CTRL a X ukončíte nano.

$ # Na 2. riadku zobrazuje počet zadaných parametrov.

Tak doteraz to všetko bolo nové, ale nie veľmi užitočné. Kto potrebuje skript, ktorý jednoducho zobrazí "ahoj"?

Skutočným používaním výrazov echo je poskytnúť užívateľovi podrobný a zmysluplný výstup. Ak si dokážete predstaviť, že chcete urobiť niečo komplikované, čo zahŕňa nejaké vážne chybné číslo a manipuláciu so súbormi / priečinkami, bolo by užitočné zobraziť užívateľovi, čo sa deje na každom kroku.

Naproti tomu vstupné parametre robia váš skript interaktívny. Bez vstupných parametrov by ste potrebovali desiatky skriptov, ktoré robia veľmi podobné veci, ale s mierne odlišnými názvami.

So všetkými uvedenými skutočnosťami existujú niektoré ďalšie užitočné vstupné parametre, ktoré je dobré vedieť a ja ich všetky zahrniem do jedného útržku kódu.

Otvorte svoj skript greetme.sh a zmeňte ho takto:

#! / bin / bash echo "Názov súboru: $ 0" echo "ID procesu: $$" echo "---------------------------- --- "echo" ste zadali $ # mená "echo" ahoj $ @ "

Stlačením klávesov CTRL a O uložte súbor, CTRL a X ukončíte.

Teraz spustite skript (nahraďte svojim menom).

sh greetme.sh

Tentokrát sa v skripte zobrazí nasledovné:

Názov súboru: greetme.sh ID procesu: 18595 ------------------------------ Zadali ste 2 mená hello gary newell

$ 0 na prvom riadku skriptu zobrazuje názov skriptu, ktorý používate. Všimnite si, že je dolár nula a nie dolár o.

Hodnota $$ na druhom riadku zobrazuje id procesu spúšťaného skriptu. Prečo je to užitočné? Ak používate skript v popredí, môžete ho zrušiť jednoduchým stlačením kombinácie klávesov CTRL a C. Ak ste spustili skript na pozadí a začali sa opakovať a robiť to isté znovu a znovu alebo začali poškodzovať váš systém, potrebujete zabiť ho.

Ak chcete zabudnúť skript bežiaci na pozadí, potrebujete ID procesu skriptu. Nebolo by dobré, keby scenár dal ID procesu ako súčasť jeho výstupu. ( o príkazoch ps a kill )

Nakoniec predtým, než skončím s touto témou, chcela som diskutovať o tom, kam ide výstup. Pri každom spustení skriptu sa výstup zobrazuje na obrazovke.

Je celkom bežné, aby bol výstup skriptu zapísaný do výstupného súboru. Postupujte takto:

sh greetme.sh gary> greetme.log

Symbol> v príkaze vyššie vysiela text "hello gary" do súboru s názvom greetme.log.

Zakaždým, keď spustíte skript so symbolom, prepíše obsah výstupného súboru. Ak by ste radšej priložili k súboru nahradiť> s >>.

zhrnutie

Teraz by ste mali mať možnosť napísať text na obrazovku a prijať vstupné parametre.