BASH (což znamená Bourne Again Shell) je skriptovací jazyk používaný většinou operačních systémů Linux a UNIX.
Můžete spustit BASH příkazy v okně terminálu jeden po druhém, nebo můžete přidat příkazy do textového souboru pro vytvoření shell skriptu.
Skvělá věc o psaní shell skriptů je, že je můžete spustit znovu a znovu. Představte si například, že potřebujete přidat uživatele do systému, nastavit jejich oprávnění a spravovat výchozí prostředí. Můžete buď napsat příkazy na kus papíru a spustit je při přidávání nových uživatelů, nebo můžete napsat jediný skript a jen předat parametry do tohoto skriptu.
Skriptovací jazyky jako BASH mají podobné programovací konstrukty jako jiné jazyky. Můžete například použít parametry importu, abyste získali vstup z klávesnice a ukládali je jako proměnné. Potom můžete skript provést určitou akci založenou na hodnotě vstupních parametrů.
Klíčovou součástí každého programovacího a skriptovacího jazyka je schopnost opakovat a opakovat stejný kód.
Existuje několik způsobů, jak opakovat kód (také známý jako smyčky). V této příručce se zobrazí, jak napsat smyčku "pro".
A pro smyčka opakuje určitou část kódu znovu a znovu. Jsou užitečné, takže řada příkazů může pokračovat v chodu, dokud nebude splněna určitá podmínka, po které se zastaví.
V této příručce se vám zobrazí pět způsobů, jak použít smyčku pro použití v skriptu BASH.
Než začnete
Než začnete s příklady smyčky pro, musíte otevřít okno terminálu a postupujte takto:
-
Zadejte mkdir skripty (dozvíte se více o mkdir zde).
-
Zadejte cd skripty (změní se adresář na skripty ).
-
Zadejte nano examplen.sh (kde n je příklad, na kterém pracujete).
-
Zadejte skript.
-
lis CTRL + O k uložení a CTRL + X k východu.
-
Běh bash examplen.sh (opět s n jako příklad, s nímž pracujete).
Jak se slučovat skrze seznam
#! / bin / bashfor číslo v 1 2 3 4 5doecho $ numberdoneexit 0
BASH způsob používání smyček "pro" se poněkud liší od způsobu, jakým většina ostatních programovacích a skriptovacích jazyků zpracovává smyčky "pro". Pojďme si rozdělit skript. V cyklu BASH "pro" všechny příkazy mezi dělat a Hotovo jsou prováděny jednou pro každou položku v seznamu. Ve výše uvedeném příkladu je seznam všechno, co přichází za slovem v (tj. 1 2 3 4 5). Pokaždé, když smyčka iteruje, je další hodnota v seznamu vložena do proměnné zadané za slovem "pro" . Ve výše uvedené smyčce je volána proměnná číslo . Příkaz echo slouží k zobrazení informací na obrazovce. Proto tento příklad přebírá čísla 1 až 5 a vystupuje je jeden po druhém na obrazovku: Problém s výše uvedeným příkladem spočívá v tom, že pokud chcete zpracovat větší seznam (např. 1 až 500), mělo by to trvat několik let, kdybyste na prvním místě zadali všechna čísla. To nás přivádí k druhému příkladu, který ukazuje, jak určit počáteční a koncový bod: #! / bin / bashfor číslo v {1..10} doecho "$ number" doneexit 0
Pravidla jsou v podstatě stejná. Hodnoty za slovem " v" vytvoří seznam pro iteraci a každá hodnota v seznamu je umístěna v proměnné (tj. číslo) a pokaždé, když smyčka iteruje, příkazy mezi dělat a Hotovo jsou prováděny. Hlavním rozdílem je způsob vytváření seznamu. Křivkové závorky {} v podstatě označují rozsah a rozsah je v tomto případě 1 až 10 (dvě tečky oddělují počátek a konec rozsahu). Tento příklad proto prochází každým číslem mezi 1 a 10 a vyvede číslo na obrazovku následujícím způsobem: Stejná smyčka mohla být napsána takto, se stejnou syntaxí jako první příklad: pro číslo v 1 2 3 4 5 6 7 8 9 10 Předchozí příklad ukázal, jak slučovat mezi počátečním a koncovým bodem, takže se nyní podíváme na to, jak přeskočit čísla v rozsahu. Představte si, že chcete smyčku mezi 0 a 100, ale zobrazovat pouze každé desáté číslo. Následující skript ukazuje, jak to udělat: #! / bin / bashfor číslo v {0..100..10} doecho "$ number" doneexit 0
Pravidla jsou v podstatě stejná. K dispozici je seznam, proměnná a sada příkazů, které mají být provedeny mezi dělat a Hotovo . Seznam tentokrát vypadá takto: {0..100..10}. První číslo je 0 a koncové číslo je 100. Třetí číslo (10) je počet položek v seznamu, které bude přeskočit. Výše uvedený příklad proto zobrazuje následující výstup: Typ BASH pro zápis smyček je v porovnání s jinými programovacími jazyky mírně podivný. Můžete však napsat smyčku v podobném stylu jako programovací jazyk C, například: # {bin / bashfor ((číslo = 1; číslo <100; číslo ++)) {if (($ number% 5 == 0)) thenecho "$ číslo je dělitelné 5"
Smyčka začíná nastavením čísla proměnné na hodnotu 1 (číslo = 1 ). Smyčka zůstane iterována, zatímco hodnota čísla je menší než 100 ( číslo <100 ). Hodnota číslo změnami přidáním 1 po každé iteraci ( číslo ++ ). Všechno mezi kudrnatými příchytkami se provádí prostřednictvím každé iterace smyčky. Bit mezi třmeny kontroluje hodnotu a číslo , Rozdělí ji 5 a porovná zbytek na 0. Je-li zbytek 0, pak číslo je dělitelné 5 a poté se zobrazí na obrazovce. Například: Pokud chcete změnit velikost kroku iterace, můžete změnit číslo ++ číslo = číslo + 2 , číslo = číslo + 5 , nebo číslo = číslo + 10 atd. To lze dále omezit na číslo + = 2 nebo číslo + = 5 . Pro smyčky může dělat více než opakovat seznam čísel. Ve skutečnosti můžete použít výstup ostatních příkazů jako seznam. Následující příklad ukazuje, jak převést zvukové soubory z formátu MP3 do formátu WAV: #! / bin / bashpro soubor v ./*.mp3dompg -w ./wavs/"${file}".wav "$ soubor" done
Seznam v tomto příkladu je každý soubor s příponou .MP3 v aktuální složce a proměnná je a soubor . The mpg příkaz převede soubor MP3 do formátu WAV. Pravděpodobně je však nutné nejdříve nainstalovat pomocí správce balíčků.
Jak slučovat mezi počátečním a koncovým bodem
Jak přeskočit čísla v rozmezí
Tradiční hledá smyčku
Praktický příklad