GNU/Linux >> Znalost Linux >  >> Linux

Bash Scripting Tutorial pro začátečníky

Pokud začínáte se systémy Linux, termíny jako "Shell scripting" nebo „Bash skriptování “ mohou být docela běžné – Ale co znamenají? Než se dostaneme k podrobnostem, osvojení si skriptování Bash vám může pomoci ušetřit čas při spouštění a provádění různých systémových úloh a lépe porozumět příkazovému řádku (Terminálu) Linuxu a automatizovat různé systémové úlohy.

Co je to Bash?

Bash, zkratka pro „Bourne-Again-Shell,“ je unixový shell nebo interpret příkazového jazyka pro operační systém GNU. Byl to hlavní Shell pro distribuce Linuxu a vydání Apple macOS před macOS Catalina. Bash je k dispozici také pro Windows 10 prostřednictvím subsystému Windows pro Linux.

Bash obvykle běží v textovém okně běžně známém jako Terminál, kde uživatelé zadávají příkazy k provádění různých úkolů. Bash může také spouštět příkazy zapsané v souboru, což je metoda označovaná jako "bash skriptování."

Rozdíl mezi Bash skriptováním a Shell skriptováním

Skriptování Shell a skriptování Bash nejsou totéž. S Bash skriptováním explicitně používáte bash shell. Na druhou stranu, Shell skriptování může být docela široké slovo, protože máme k dispozici jiné shelly než Bash. Mezi nejběžnější patří Korn (ksh), C shell (csh), Z shell (zsh) a Bash shell (sh). Nebylo by však překvapením, kdybychom našli lidi, kteří používají bash skriptování a shell skriptování zaměnitelně, aby znamenali totéž. Náš příspěvek na Top 6 Open Source Shells pro Linux poskytuje podrobný popis těchto shellů.

V tomto příspěvku se podíváme na skriptování Bash. Ve výchozím nastavení mnoho dostupných distribucí Linuxu využívá prostředí Bash. Podívejte se na náš příspěvek o 6 nejlepších distribucích Linuxu pro začátečníky. Chcete-li potvrdit shell, který používáte ve vaší aktuální distribuci Linuxu, spusťte příkaz na terminálu.

echo $SHELL

Z obrázku výše můžete vidět výchozí interpret v mém systému je bash. V současné době používám Ubuntu 20.04 LTS. Pojďme se ponořit!

Porozumění skriptům Bash

Bash skripty jsou textové soubory obsahující bash příkazy, které se spouštějí k provádění různých úkolů. K psaní těchto skriptů potřebujete pouze jednoduchý textový editor, jako je gedit, listová podložka, vim, nano a mnoho dalších. Nezapomeňte prosím uložit své skripty pomocí .sh rozšíření a jako prostý text a nikoli formátovaný text. Jedním z mých oblíbených editorů, které používám pro psaní skriptů, je nano editor.

Pojmenování, přiřazení oprávnění a spuštění skriptu Bash

Jak je vysvětleno výše, ujistěte se, že používáte pro své bash skripty příponu .sh. Můžete mít například skript s názvem fosslinux_backup.sh . Nejlepší by však bylo, kdybyste byli s pojmenováváním svých skriptů opatrní. Většina lidí například ráda ukládá většinu svých skriptů jako „test“. Většina neznámá existuje unixový vestavěný příkaz zvaný test, který kontroluje typy souborů a porovnává hodnoty. Pomocí příkazu which můžete zkontrolovat, zda existuje program se stejným názvem, jako má váš skript, abyste předešli případným konfliktům programu.

který [příkaz]např. který test

Z výše uvedeného výstupu vidíme, že test je již vestavěný příkaz. Proto, abych se vyhnul konfliktům mezi programy, nebudu žádný ze svých skriptů pojmenovávat jako „test“.

Chcete-li, aby byl skript spustitelný pro každého uživatele, použijte následující příkaz:

chmod +x [script.sh]

Chcete-li, aby byl skript spustitelný pro aktuálního uživatele, použijte následující příkaz:

chmod u+x [script.sh]

Nyní pro spuštění skriptu spusťte níže uvedený příkaz:

./[script_name]

S výše uvedenou metodou si uvědomíte, že budete muset použít cd příkaz k přesunutí do adresáře obsahujícího skript nebo předání cesty ke skriptu. Existuje však řešení. Uložte skripty do bin adresář přítomný v domovském adresáři.

S nedávnými aktualizacemi většina distribucí nepřichází s bin složku ve výchozím nastavení. Budete jej tedy muset vytvořit ručně. Umístěním skriptů do této složky můžete skript spustit zadáním jeho názvu do terminálu bez použití cd a ./ příkazy.

Pokyny pro skriptování Bash

Než napíšete svůj první skript, existuje několik pokynů, kterým musíte při psaní skriptů porozumět.

  • Všechny vaše skripty by měly začínat řádkem „#!/bin/bash.“
  • Umístit každý příkaz na nový řádek.
  • Každý komentář začíná # symbol.
  • Příkazy jsou uzavřeny pomocí () závorky.

#!/bin/bash Příkaz (Hash-Bang Hack) je cesta k shellu, který budeme používat. Pokud používáte jiný shell, budete muset tuto cestu upravit. Chápeme, že všechny komentáře začínají # symbol. Pokud však následuje znak (!) v Hash-Bang Hack je skript nucen provést s shellem, na který ukazuje tento řádek. V našem případě je to shell Bash.

Váš první skript Bash

Jako většina programovacích jazyků napíšeme skript, který vypíše „Ahoj světe“ příkaz při provedení. Otevřete svůj oblíbený textový editor a vložte níže uvedené příkazy. Uložte textový soubor jako fossHelloWorld.sh nebo jakýkoli jiný název, který není vestavěným příkazem.

#!/bin/bash#Tento skript vytiskne 'Ahoj světe' na Terminalecho "Ahoj světe"

Jakmile soubor uložíte, udělejte jej spustitelným provedením příkazu níže:

chmod +x fossHelloWorld.sh

Nyní jej spusťte pomocí příkazu níže:

./fossHelloWorld.sh

Výše uvedený skript má pouze tři řádky. První je Hash-Bang Hack, o kterém jsme hovořili výše, druhý je komentář a třetí je příkaz, který bude proveden. Poznámka:komentáře se nikdy nespouštějí.

Podívejme se na další funkce skriptování bash, které můžete využít.

Příkaz Echo

Příkaz Echo se používá k tisku výstupu na příkazovém řádku systému Linux nebo na terminálu. Pokud jste vývojář a již jste s PHP pracovali, určitě jste se s tímto příkazem také setkali. Pojďme napsat malý bash skript, který demonstruje, jak tento příkaz funguje.

#!/bin/bash#Vytiskněte první řádek "Toto je Fosslinux.com – s novým řádkem"#Vytiskněte druhý příkaz bez nového řádku -n "Toto je Fosslinux – žádný nový řádek" 

Uložte skript, přidělte požadovaná oprávnění a spusťte jej.

Pro pochopení kódu vytiskne první příkaz echo příkaz a přejde na další řádek. Druhý příkaz echo má -n argument, který zabraňuje skriptu přejít na další řádek. S příkazem Echo můžete použít mnoho dalších možností, včetně proměnných, jak uvidíme níže.

Proměnné

Proměnné jsou běžnou a nezbytnou součástí každého programovacího jazyka. Proměnné Bash lze deklarovat několika způsoby. Při přiřazování hodnoty jakékoli proměnné nemusíte používat žádné symboly. Při volání hodnoty proměnné však budete muset použít $ znaménko na začátku proměnné.

Proměnné můžete použít na terminálu nebo jako skripty. Proveďte níže uvedené příkazy na svém terminálu.

myWebsite ="Fosslinux.com"echo $myWebsite

Nyní vytvoříme bash skript, který vezme dva vstupy od uživatele a uloží je do proměnných $x a $y . Skript poté zkontroluje, zda jsou tyto dvě hodnoty stejné nebo ne.

#!/bin/bashecho "Zadejte první číslo"přečtěte aecho "Zadejte druhé číslo"přečtěte bif [[ $a -eq $b ]]thenecho "Čísla se rovnají"elseecho "Čísla se nerovnají"fi 

Uložte skript a spusťte jej. Z obrázku níže můžete vidět, že jsme zadali různé hodnoty a skript byl schopen zkontrolovat, zda jsou stejné nebo ne.

Nyní se podívejme blíže na kód. První dva příkazy echo vyzvou uživatele k zadání prvního a druhého čísla. read příkaz počká, až uživatel zadá číslo a uloží jej do zadané proměnné. V našem případě je to a a b . Pak máme příkaz if, který kontroluje, zda jsou tyto dvě hodnoty stejné nebo ne.

Podmíněné prohlášení

V jakémkoli programovacím jazyce řídí tok programu podmíněné příkazy. Část kódu se spustí pouze tehdy, když je splněna určitá podmínka. Některé z nejběžnějších podmíněných příkazů zahrnují „if-then-else“ a „case“. Níže je uvedena základní syntaxe příkazu if-then-else.

if [[ podmínka ]]potomjinakfi

Podívejte se na níže uvedený skript, který využívá podmíněný příkaz „if-then-else“.

#!/bin/bashecho "Zadejte svůj věk"přečíst ageif ((věk> 18 ))thenecho "Můžete jít na večírek"elseecho "Nejste způsobilí jít na večírek"fi

Pojďme si projít skript výše. Máme echo prohlášení, které vyzve uživatele k zadání jejich věkového čísla. read příkaz ukládá zadaný věk do proměnné „věk“. Poté máme podmíněný příkaz if-then-else, který kontroluje, zda je věk vyšší než 18 let, než dá uživateli pokyn.

Smyčky

Smyčky se běžně používají, když chcete provést část kódu vícekrát. Například, pokud bych chtěl echo 1000 řádků výroku „Vítejte ve Fosslinuxu“, potřeboval bych 1000 echo příkazů. U cyklů však vše, co musím udělat, je zadat, kolikrát chci, aby byl příkaz ozván nebo vytištěn na terminálu. Bash podporuje tři typy smyček; Pro smyčku, smyčku While a smyčku Until. Podívejme se na každou z nich.

  • Smyčka For

Smyčka For se používá k iteraci seznamu specifikovaných dat nebo pole. Níže je uvedena základní syntaxe Bash For Loop;

pro hodnotu v 1 2 3 4 5 .. Ndoinstrukce1instrukce2instrukce-Ndone

nebo,

pro VALUE v souboru1 soubor2 soubor3doinstrukce1 na $VALUEinstruction2instruction-Ndone

Podívejte se na skript níže. Iteruje dané dny v týdnu a tiskne je na Terminálu řádek po řádku.

#Přečtěte si název dne v týdnu v každé iteraci smyčky pro den v pondělí Úterý Středa Čtvrtek Pátek Sobota Neděledoecho "$day"hotovo

Uložme skript jako ForLoop.sh a provést to. Níže je snímek obrazovky s výstupem.

To je jen jednoduchý příklad toho, co můžete dělat s For Loop. Můžete jej také zkombinovat s podmíněnými příkazy k dokončení konkrétního úkolu.

  • The While Loop

Smyčka While provádí konkrétní úlohu, zatímco konkrétní podmínka zůstává pravdivá. V každé iteraci smyčka nejprve zkontroluje podmínku před provedením pokynů. Když je podmínka False, smyčka se ukončí. Základní syntaxe cyklu bash While je následující:

zatímco [CONDITION]proveďte[COMMANDS]hotovo

Můžeme mít například skript, který vytiskne prohlášení „Vítejte na FOSSLINUX.COM“ 20krát, dokud není proměnná X nastavena na 20. Zkusme to prakticky implementovat. Podívejte se na skript níže.

#!/bin/bashx=1zatímco [ $x -le 20 ]doecho "Vítejte na FOSSLINUX.COM"x=$(( $x + 1 ))hotovo

Uložme skript jako WhileLoop.sh a provést to. Níže je snímek obrazovky s výstupem.

Podívejme se na skript While Loop výše. Nejprve deklarujeme proměnnou X a dáme jí hodnotu 1. Poté vytvoříme příkaz While, který vydá příkaz „Vítejte na FOSSLINUX.COM“, zatímco X je menší než 20. Nakonec zvýšíme X o jednu po každé iteraci.

  • Smyčka Až do

Smyčky Bash Until se používají k provádění sady instrukcí nebo příkazů, pokud je nastavená podmínka vyhodnocena jako nepravda. Níže je uvedena základní syntaxe smyčky Until.

dokud [CONDITION]neuděláte[POKYNY/PŘÍKAZY]hotovo

Podobně jako u smyčky While, smyčka Until nejprve vyhodnotí nastavenou podmínku před provedením pokynů nebo příkazů. Pokud se podmínka vyhodnotí jako nepravda, instrukce se provedou. Cyklus je ukončen, když se podmínka vyhodnotí jako pravdivá. Podívejte se na příklad níže.

#!/bin/bashcount=0until [ $count -gt 5 ]doecho Counter:$count((count++))hotovo

Poté, co výše uvedený skript uložíme a spustíme, dostaneme výstup níže:

Výše uvedené skripty nejprve vytvoří počet proměnných a nastaví jej na nulu (0). To je podmínka, která řídí tok našeho programu. Smyčka Until kontroluje, zda je hodnota počtu větší než 5. Pokud není, vytiskne předané pokyny. Pokud je však hodnota větší než 5, smyčka se okamžitě ukončí. Nakonec zvýšíme hodnotu počtu o 1 (count++).

Funkce Bash

Při programování a skriptování se funkce používají k uchování opakovaně použitelného kódu potřebného k provedení konkrétního úkolu. Pokud tedy máte podobné příkazy, které chcete provádět v různých částech skriptu, nemusíte tyto příkazy opakovaně psát. Uzavřete je do funkce a místo toho funkci spusťte.
Níže je základní syntaxe funkce Bash.

název_funkce () {}

nebo,

funkce název_funkce {}

Vytvořme jednoduchý skript, který využívá funkce. Nejprve vytvoříme funkci nazvanou „myFunction“, která po zavolání vydá prohlášení „Ahoj, jsem první funkce“. Druhá funkce, „myCities“, je trochu pokročilá, protože vyžaduje předané argumenty. Argumenty jsou uvedeny po zavolání názvu funkce. Jsou dostupné ve funkci jako $1.

#!/bin/bashmyFunction () {echo "Dobrý den, jsem první funkce"echo "Dobrý den, jsem první funkce"echo}echo "Toto je druhá funkce" funkce myCities () {echo Ahoj $1}myFunctionmyCities Washington, D.CmyCities Phoenix

Po uložení a spuštění skriptu dostaneme výstup níže.

Nabídky Bash

Při psaní skriptu k provedení pokročilé úlohy může být nutné, aby uživatel vybral jednu možnost z několika možností zobrazených na terminálu. Abychom toho dosáhli, použijeme bash select příkaz.

Vytváří jednoduchý skript nabídky, který vyzve uživatele, aby si ze seznamu vybrali své oblíbené distribuce Linuxu. Podívejte se na skript níže.

#!/bin/bash#Vytisknout zprávu pro uživatelské echo "Vyberte svou oblíbenou distribuci Linuxu"vyberte distribuci v Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kalido#Vytiskněte vybranou hodnotuif [[ $distro =="Konec" ]]poté ukončete 0elseecho "Vybraná distribuce Linuxu je $distro"fidone

Uložme skript jako menu.sh a spusťte jej. Získáme výstup níže.

Ve výše uvedeném skriptu máme seznam distribuce Seven Linux, kterou uživatel vybere. Poté, co provedou výběr, uloží se do proměnné distro a později vytištěn zřetězením s řetězcem „Vybraná distribuce Linuxu je.“ Bash select menu může být docela užitečné, zvláště když máte více skriptů provádějících různé úkoly a jeden musíte vybrat ten, který chcete spustit.

Aritmetika

Každý programovací jazyk podporuje provádění aritmetických operací a skriptování bash není výjimkou. Způsob, jakým provádíme aritmetické operace, je však trochu jiný. Níže je jeden ze způsobů, jak můžete provádět aritmetické operace v bash. Podíváme se na čtyři typy aritmetických operací – součet, dělení a násobení.

#!/bin/bash# Vypočítat výsledek součtu=$((70+15))# Vytisknout hodnotu součtu "součet =$výsledek"# Vypočítat výsledek dělení=$((100/25))# Vytisknout hodnotu dělení " dělení =$result"#Calculate Multiplicationresult=$((15*15))echo "Multiplikace =$result"

Uložme výše uvedený skript jako aritmetický.sh a spusťte jej. Získáme výstup níže.

Závěr

Toto je úplný průvodce pro začátečníky, jak začít se skriptováním v Bash. Nicméně v Bash je toho víc, než co je popsáno v tomto tutoriálu. Jedním z míst, které bych doporučil pro zlepšení vašich dovedností, je GNU’s Bash Reference Manual. Pokud narazíte na nějaké problémy nebo se k tomuto příspěvku vyjádříte, neváhejte a klikněte na komentáře níže.


Linux
  1. Bash Scripting Tutorial pro začátečníky:Co to je, jak to napsat a příklady skriptů

  2. Linux cd command tutorial pro začátečníky (8 příkladů)

  3. Linux Date Command Tutorial pro začátečníky (8 příkladů)

  1. Výuka příkazů Linux pro začátečníky (5 příkladů)

  2. Linux df Command Tutorial pro začátečníky (8 příkladů)

  3. Linux du Command Tutorial pro začátečníky (10 příkladů)

  1. Výukový program Linux echo Command pro začátečníky (5 příkladů)

  2. Linux env Command Tutorial pro začátečníky (5 příkladů)

  3. Návod k příkazu velikosti Linuxu pro začátečníky (6 příkladů)