Vítejte u 2. dílu série Začátečníci průvodce 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 prohloubí své znalosti a doufejme, že do konce budou schopni napsat docela chytré skripty. Minule jsme se zabývali vytvořením vašeho prvního skriptu, který jednoduše zobrazil slova „Hello World“. Zahrnuje témata, jako jsou textové editory, jak otevřít okno terminálu, kam umístit skripty, jak zobrazit slova „Hello World“ a některé jemnější body na únikových znacích, jako jsou uvozovky („“). Tato část se zabývá vstupními parametry. Existují i jiní průvodci, kteří učí tento druh věcí, ale příliš často skáčou do nějakých poměrně nízkoúrovňových věcí a možná poskytují příliš mnoho informací.
Skript parametrů přidává přizpůsobení
Ve skriptu „Hello World“ z posledního tutoriálu to bylo všechno velmi statické. Scénář toho vlastně moc neudělal.
Jak bychom mohli zlepšit skript „Hello World“?
A co skript, který pozdraví osobu, která ho spouští? Místo „Hello World“ řekne „Hello Gary“, „Hello Tim“ nebo „Hello Dolly“. Bez schopnosti přijímat vstupní parametry bychom potřebovali napsat tři skripty „hellogary.sh“, „hellotim.sh“ a „hellodolly.sh“.
Jak vytvořit parametr
Tím, že umožníme našemu skriptu číst vstupní parametry, můžeme použít jeden skript k přivítání 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 příkazu: (o příkazu cd) cd skripty
Vytvořte nový skript nazvaný pozdravme.sh zadáním následujícího: (o příkazu dotyku) dotkněte se pozdravu.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 $@“
lis CTRL a Ó soubor uložte a poté CTRL a X zavřete soubor.
Ke spuštění skriptu zadejte do příkazového řádku následující text, který nahradíte svým jménem. sh pozdrav. sh Tim
Pokud spustím skript se svým jménem, zobrazí se slova „Ahoj Gary“.
První řádek obsahuje řádek #!/Bin/bash, který slouží k identifikaci souboru jako skriptu bash. Druhý řádek používá příkaz echo k ozvěně slovo ahoj a pak je tu podivný zápis $@. (o příkazu echo) $@ se rozbalí 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 „ahoj tim“. Pokud zadáte „greetme.sh tim smith“, zobrazí se slova „ahoj tim smith“.
Pomocí příkazů Echo
Mohlo by být hezké, kdyby skript pozdravu.sh pozdravil pomocí pouze křestního jména. Když někdo někoho potká, nikdo neřekne: „Ahoj, Gary Newell,“ ale mohl by říct: „Ahoj Gary,“ Pojďme změnit skript tak, aby používal pouze první parametr. Otevřete skript greetme.sh v nano zadáním následujícího: nano greetme.sh
Změňte skript tak, aby zněl takto: #!/Bin/bash
echo „ahoj $ 1“
Skript uložte stisknutím CTRL a Ó a poté ukončete stisknutím CTRL a X.
Spusťte skript, jak je znázorněno níže (nahraďte název svým): sh greetme.sh gary newell
Když spustíte skript, jednoduše řekne „Ahoj Gary“ (nebo doufejme „ahoj“ a ať se jmenujete jakkoli).
1 za symbol $ v zásadě říká příkazu echo, použijte první parametr. Pokud nahradíte 1 $ za 2 $, zobrazí se „ahoj newell“ (nebo jaké je vaše příjmení). Můžete také přidat 2 $ po 1 $, abyste získali úplné jméno.
Když spustíte více než jeden parametr, zobrazí se na místech odpovídajících pořadí, ve kterém byly zadány.
Mimochodem, pokud byste nahradili $ 2 za $ 3 a spustili skript s pouhými 2 parametry, výstup by byl jednoduše „Hello“.
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žít 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ásledujícím způsobem: #!/Bin/bash
echo „zadali jste $# jmen“
echo „ahoj $@“
lis CTRL a Ó pro uložení skriptu a CTRL a X ukončit nano.
$# Na 2. řádku zobrazuje počet zadaných parametrů. Zatím to všechno bylo nové, ale ne příliš užitečné. Kdo potřebuje skript, který jednoduše zobrazí „ahoj“?
Echo Statistiky vs. Vstupní parametry
Skutečným využitím příkazů echo je poskytnout uživateli podrobný a smysluplný výstup. Pokud si dokážete představit, že chcete udělat něco komplikovaného, což zahrnuje vážné zkracování čísel a manipulaci se soubory/složkami, bylo by užitečné uživateli ukázat, co se děje v každém kroku. Naproti tomu vstupní parametry činí váš skript interaktivní. Bez vstupních parametrů byste potřebovali desítky skriptů, které by dělaly velmi podobné věci, ale s mírně odlišnými názvy. Vzhledem k tomu všemu existuje několik dalších užitečných vstupních parametrů, které je dobré vědět, a zahrnu je všechny do jednoho fragmentu kódu. Otevřete skript pozdravu.sh a upravte jej takto: #!/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 svým jménem). sh pozdravuj.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ý používáte. Všimněte si, že je to dolar nula a ne dolar o. $$ na druhém řádku zobrazuje ID procesu skriptu, který používáte. Proč je to užitečné? Pokud spouštíte skript v popředí, můžete jej zrušit jednoduchým stisknutím CTRL a C. Pokud jste spustili skript na pozadí a začal se opakovat a dělat totéž znovu a znovu nebo začal způsobovat poškození vašeho systému, museli byste ho zabít. Chcete -li zabít skript spuštěný na pozadí, potřebujete ID procesu skriptu. Nebylo by dobré, kdyby skript dal jako součást výstupu ID procesu? (o příkazech ps a kill)
Zabalit …
Nakonec, než skončíme s tímto tématem, je důležité diskutovat, kam jde výstup. Pokaždé, když se skript dosud spustil, byl výstup zobrazen 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ásledujícím způsobem: sh greetme.sh gary> greetme.log
Symbol> ve výše uvedeném příkazu vydá text „ahoj gary“ do souboru s názvem pozdravme.log. Pokaždé, když spustíte skript se symbolem>, přepíše obsah výstupního souboru. Pokud chcete přidat soubor, nahraďte> znakem >>. Nyní byste měli být schopni psát text na obrazovku a přijímat vstupní parametry.