Průvodce pro začátečníky k BASH
Vítejte u 2. části série Beginners Guide To BASH, která je jedinečná v tom, že je to jediný BASH tutoriál napsaný začátečníkem pro začátečníky.
Čtenáři této příručky si vybudují své znalosti a doufejme, že na konci budou schopni psát docela chytré skripty.
Minule jsme kryli vytvoření vašeho prvního skriptu který jednoduše zobrazoval slova „Ahoj světe“. Pokrývá témata, jako jsou textové editory, jak otevřít okno terminálu, kam umístit skripty, jak zobrazit slova „Ahoj světe“ a některé jemnější body na útěkových znacích, jako jsou uvozovky ("").
Tato část se zabývá vstupními parametry. Existují další průvodci které učí takové věci, ale až příliš často skákají do některých věcí na poměrně nízké úrovni a možná poskytují příliš mnoho informací.
Skript parametrů přidává přizpůsobení
Ve skriptu "Ahoj světe" z posledního tutoriálu to bylo všechno velmi statické. Scénář toho vlastně vůbec moc neudělal.
Jak bychom mohli zlepšit scénář "Ahoj světe"?
A co skript, který pozdraví osobu, která jej spouští? Místo „Hello World“ se řekne „Ahoj Gary“, „Ahoj Tim“ nebo „Ahoj Dolly“.
Bez schopnosti přijímat vstupní parametry bychom museli napsat tři skripty "hellogary.sh", "hellotim.sh" a "hellodolly.sh".
Jak vytvořit parametr
Tím, že našemu skriptu umožníme číst vstupní parametry, můžeme použít jeden skript k pozdravu kohokoli.
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 s názvem greetme.sh zadáním následujícího: (o dotykovém příkazu)
dotkněte se greetme.sh
Otevřete skript ve svém oblíbeném editoru zadáním následujícího: (o nano příkazu)
nano pozdravme.sh
Do nano zadejte následující text:
#!/bin/bash
echo "ahoj $@"
lis CTRL a Ó pro uložení souboru a poté CTRL a X pro zavření souboru.

Chcete-li skript spustit, zadejte do příkazového řádku následující příkaz a nahraďte je svým jménem.
sh pozdravme.sh Tim
Pokud spustím skript se svým jménem, zobrazí se slova „Hello Gary“.

První řádek má řádek #!/bin/bash, který se používá k identifikaci souboru jako bash skriptu.
Druhý řádek používá příkaz echo k echo slova ahoj a pak je tu zvláštní zápis $@. (o příkazu echo)
$@ se rozšíří a zobrazí každý parametr, který byl zadán spolu s názvem skriptu. Pokud tedy zadáte „sh greetme.sh tim“, zobrazí se slova „hello tim“. Pokud zadáte „greetme.sh tim smith“, zobrazí se slova „hello tim smith“.
Použití příkazů Echo
Pro skript greetme.sh může být hezké pozdravit pouze pomocí křestního jména. Když se s někým setkají, nikdo neřekne „Ahoj Gary Newell“, ale může říct „Ahoj Gary“.
Změňme skript tak, aby používal pouze první parametr. Otevřete skript greetme.sh v nano zadáním následujícího:
nano pozdravme.sh
Změňte skript tak, aby četl následovně:
#!/bin/bash
echo "ahoj $1"
Uložte skript stisknutím CTRL a Ó a poté ukončete stisknutím CTRL a X.

Spusťte skript, jak je uvedeno níže (nahraďte název svým):
sh pozdravme.sh gary newell
Když skript spustíte, řekne jednoduše: "Ahoj Gary" (nebo doufejme "ahoj" a jak se jmenuješ).

1 za symbolem $ v podstatě říká příkazu echo, použijte první parametr. Pokud nahradíte $1 $2, zobrazí se "hello newell" (nebo jaké je vaše příjmení). Můžete také přidat $2 za $1, abyste získali celé jméno.

Spuštění s více než jedním parametrem je zobrazí na místech odpovídajících pořadí, v jakém byly zadány.

Mimochodem, pokud byste nahradili $2 $3 a spustili skript pouze se 2 parametry, výstup by byl jednoduše "Ahoj."
Jak zobrazit počet použitých parametrů
Je možné zobrazit a zpracovat počet skutečně zadaných parametrů a pozdější tutoriály vám ukážou, jak používat počet parametrů pro účely ověření.
Chcete-li zobrazit počet zadaných parametrů, otevřete skript greetme.sh (nano greetme.sh) a upravte text následovně:
#!/bin/bash
echo "zadali jste $# jmen"
echo "ahoj $@"
lis CTRL a Ó uložit skript a CTRL a X pro ukončení nano.

$# na 2. řádku zobrazuje počet zadaných parametrů.
Doposud to vše bylo nové, ale nepříliš užitečné. Kdo potřebuje skript, který jednoduše zobrazuje „ahoj“?

Echo prohlášení vs. Vstupní parametry
Skutečné použití příkazů echo je poskytovat uživateli podrobný a smysluplný výstup. Pokud si dokážete představit, že chcete udělat něco složitého, co zahrnuje nějaké vážné číslování a manipulaci se soubory/složkami, bylo by užitečné zobrazit uživateli, co se děje v každém kroku způsob.
Naproti tomu vstupní parametry činí váš skript interaktivní. Bez vstupních parametrů byste potřebovali desítky skriptů, které všechny dělají velmi podobné věci, ale s mírně odlišnými názvy.
Vzhledem k tomu všemu jsou zde některé další užitečné vstupní parametry, které je dobré znát, a všechny je zahrnu do jednoho fragmentu kódu.
Otevřete skript greetme.sh a upravte jej následovně:
#!/bin/bash
echo "Název souboru: $0"
echo "ID procesu: $$"
echo ""
echo "zadali jste $# jmen"
echo "ahoj $@"
lis CTRL a Ó pro uložení souboru a CTRL a X k východu.

Nyní spusťte skript (nahraďte jej svým jménem).
sh pozdravme.sh
Tentokrát skript zobrazí následující:
Název souboru: greetme.sh
ID procesu: 18595
zadali jste 2 jména
ahoj gary newell

$0 na prvním řádku skriptu zobrazuje název skriptu, který spouštíte. Všimněte si, že je to dolar nula a ne dolar o.
$$ na druhém řádku zobrazuje ID procesu skriptu, který spouštíte. Proč je to užitečné? Pokud spouštíte skript v popředí, můžete jej zrušit pouhým stisknutím CTRL a C. Pokud jste spustili skript na pozadí a začal se opakovat a dělat to samé znovu a znovu nebo začal poškozovat váš systém, museli byste ho zabít.
Chcete-li ukončit 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 příkazech ps a kill)
Zabalit...
Nakonec, než skončíme s tímto tématem, je důležité prodiskutovat, kam výstup směřuje. Pokaždé, když byl skript doposud spuštěn, výstup se zobrazil na obrazovce.
Je zcela běžné, že výstup skriptu je zapsán do výstupního souboru. Chcete-li to provést, spusťte skript následovně:
sh greetme.sh gary > greetme.log
Symbol > ve výše uvedeném příkazu vypíše text „hello gary“ do souboru s názvem greetme.log.
Pokaždé, když spustíte skript se symbolem >, přepíše obsah výstupního souboru. Pokud byste raději přidali k souboru, nahraďte > za >>.
Nyní byste měli být schopni psát text na obrazovku a přijímat vstupní parametry.