Průvodce pro začátečníky k BASH - vstupní parametry

Vítejte ve 2. části Průvodce pro začátečníky série BASH, která je jedinečná v tom, že je jediným tutoriálem BASH napsaným začátečníkem pro začátečníky.

Čtenáři této příručky budují své znalosti, budu si své znalosti a doufejme, že až do konce toho všeho budeme schopni napsat spoustu chytrých skriptů.

Minulý týden jsem se zabýval vytvořením prvního skriptu, který jednoduše zobrazoval slova "Hello World". Zahrnuje předměty, jako jsou textové editory, otevření okna terminálu, umístění skriptů, způsob zobrazení slov "Hello World" a některé jemnější body na únikových postavách, například uvozovek ("").

Tento týden se chystám zakrýt vstupní parametry. Existují další průvodci, kteří učí takovou věc, ale zjistil jsem, že skočili do nějaké poměrně nízké úrovně a možná poskytli příliš mnoho informací.

Co je to parametr?

V skriptu "Hello World" z posledního tutoriálu to bylo velmi statické. Scénář ve skutečnosti moc neudělal.

Jak bychom mohli zlepšit skript "Hello World"?

A co scénář, který pozdravuje osobu, která ho provozuje? Místo toho, aby říkalo "Hello World", řekne "Hello Gary", "Hello Tim" nebo "Hello Dolly".

Bez schopnosti přijímat vstupní parametry bychom museli napsat tři skripty "hellogary.sh", "hellotim.sh" a "hellodolly.sh".

Tím, že náš skript umožní číst vstupní parametry, můžeme použít jeden skript, aby pozdravil každého.

Chcete-li to provést, otevřete okno terminálu (CTRL + ALT + T) a přejděte do složky skriptů zadáním následujícího: ( o příkazu cd )

cd skripty

Vytvořte nový skript nazvaný greetme.sh zadáním následujícího: ( o dotykovém příkazu )

touch greetme.sh

Otevřete skript ve svém oblíbeném editoru zadáním následujícího: ( o příkazu nano )

nano greetme.sh

Do nano zadejte následující text:

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

Stisknutím kláves CTRL a O uložte soubor a potom klávesy CTRL a X zavřete soubor.

Chcete-li spustit skript, zadejte do příkazového řádku následující příkaz a nahraďte jej svým jménem.

sh greetme.sh

Pokud spustím skript s mým jménem, ​​zobrazí se slova "Hello Gary".

První řádek obsahuje řádek #! / Bin / bash, který slouží k identifikaci souboru jako bash skriptu.

Druhý řádek použije příkaz echo pro ozvěnu slova hello a pak je tam podivná notace $ @. ( o příkazu echo )

$ @ Se rozbalí a zobrazuje každý zadaný parametr spolu s názvem skriptu. Takže pokud jste zadali "sh greetme.sh tim", zobrazí se slova "hello tim". Pokud jste zadali "greetme.sh tim smith", zobrazí se slova "hello tim smith".

Mohlo by být hezké, kdyby skript greetme.sh jen řekl hello pomocí jen prvního jména. Nikdo neříká "hello gary newell", když se se mnou setkají, mohli by ale říct "hello gary" ačkoli.

Změníme skript tak, že použije pouze první parametr. Otevřete skript greetme.sh v nano zadáním následujícího:

nano greetme.sh

Změňte skript takto:

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

Uložte skript stisknutím kláves CTRL a O a ukončete stisknutím kláves CTRL a X.

Spusťte skript, jak je znázorněno níže (nahraďte své jméno):

sh greetme.sh gary newell

Když spustíte skript, jednoduše řekne "hello gary" (nebo "ahoj" a bez ohledu na vaše jméno).

Symbol 1 za znakem $ v podstatě říká příkazu echo, použijte první parametr. Pokud nahradíte $ 1 za $ 2, zobrazí se "hello newell" (bez ohledu na vaše příjmení).

Mimochodem, pokud jste nahradili $ 2 s $ 3 a spustili skript pouze s 2 parametry, výstup by byl jednoduše "Hello".

Je možné zobrazit a zpracovat počet skutečně zadaných parametrů a v pozdějších tutoriích ukážeme, jak používat parametr pro účely validace.

Pro zobrazení počtu zadaných parametrů otevřete skript greetme.sh (nano greetme.sh) a změňte text následujícím způsobem:

#! / bin / bash echo "jste zadali $ # názvy" echo "hello $ @"

Stisknutím kláves CTRL a O uložte skript a CTRL a X ukončíte nano.

$ # Na druhém řádku zobrazuje počet zadaných parametrů.

Zatím bylo všechno nové, ale ne moc užitečné. Kdo potřebuje skript, který jednoduše zobrazí "hello"?

Skutečným používáním příkazů echo je poskytnout uživateli detailní a smysluplný výstup. Pokud si dokážete představit, že chcete dělat něco komplikovaného, ​​což zahrnuje nějaké vážné crunchování čísel a manipulaci s adresáři / složkami, bylo by užitečné ukázat uživateli, co se děje na každém kroku.

Naproti tomu vstupní parametry činí Váš skript interaktivní. Bez vstupních parametrů byste potřebovali desítky skriptů, které dělají velmi podobné věci, ale s mírně odlišnými názvy.

Vezmeme-li v úvahu všechny další užitečné vstupní parametry, je dobré je znát a všechny je zahrnout do jednoho fragmentu kódu.

Otevřete svůj skript greetme.sh a změňte jej takto:

#! / bin / bash echo "Jméno souboru: $ 0" echo "ID procesu: $$" echo "---------------------------- --- "echo" jste zadali $ # názvy "echo" hello $ @ "

Stisknutím kláves CTRL a O uložte soubor a CTRL a X ukončete.

Nyní spusťte skript (nahraďte svým jménem).

sh greetme.sh

Tentokrát skript zobrazí následující:

Jméno souboru: greetme.sh ID procesu: 18595 ------------------------------ Zadali jste 2 jména hello gary newell

$ 0 na prvním řádku skriptu zobrazuje název spuštěného skriptu. Všimněte si, že to je dolar nula a ne dolar o.

$ $$ na druhém řádku zobrazuje id procesu spouštěného skriptu. Proč je to užitečné? Pokud používáte skript v popředí, můžete jej zrušit jednoduše stisknutím kláves CTRL a C. Pokud jste spustili skript na pozadí a začali se opakovat a dělat totéž znovu a znovu nebo začali poškozovat váš systém, potřebujete zabít ji.

Chcete-li zabít skript běžící na pozadí, potřebujete id procesu skriptu. Nebylo by dobré, kdyby skript dal ID procesu jako součást svého výstupu. ( o ps a kill příkazy )

Konečně, než skončím s tímto tématem, chtěla jsem diskutovat o tom, kde se výstup odehrává. Pokaždé, když je skript spuštěn, byl na obrazovce zobrazen výstup.

To je docela běžné pro výstup skriptu být zapsán do výstupního souboru. Postupujte takto:

sh greetme.sh gary> greetme.log

Symbol> ve výše uvedeném příkazu vyvede text "hello gary" do souboru s názvem greetme.log.

Pokaždé, když spustíte skript se symbolem>, přepsá obsah výstupního souboru. Pokud byste chtěli připojit k souboru, nahraďte> s >>.

souhrn

Nyní byste měli mít možnost napsat text na obrazovku a přijmout vstupní parametry.