Bash (Bourne Again Shell) je příkazový řádek a skriptovací jazyk shellu v operačních systémech GNU/Linux. Je to výchozí shell pro většinu distribucí Linuxu.
Stejně jako většina skriptovacích jazyků poskytuje Bash syntaxe smyček pro opakované opakování podobných úkolů. V tomto článku se naučíme, jak používat pro
smyčka v Bash.
Úvod
Typický Bash skript obsahuje řadu příkazů, které mají být provedeny jeden po druhém. Proměnné lze použít k uložení řetězců, celočíselných indexových hodnot, výsledků příkazu atd. Smyčky jsou vyžadovány, když chce uživatel provést určitý příkaz vícekrát. Je zvláště užitečné, když výstup jednoho příkazu je ve formě seznamu a na každém výsledku v seznamu má být spuštěn druhý příkaz.
Obecná syntaxe
Obecná syntaxe pro pro
smyčka v Bash je:
pro in do ... ... hotovo
Tady, je proměnná Bash, což musí být platný název proměnné shellu Linux, tj. název obsahuje kombinaci písmen (az, AZ), číslic (0-9) a podtržítka ( _ ) a musí začínat buď písmenem nebo podtržítko.
The je buď vlastní rozsah celočíselných indexů, které se budou opakovat, nebo vlastní seznam celých čísel nebo řetězců. Může obsahovat i jiný linuxový příkaz, výstup takového příkazu však musí být oddělen mezerami nebo znaky nového řádku, tj. analyzovatelný Bashem do seznamu (Seznam v Bash je v podstatě sbírka hodnot oddělených mezerou nebo novým řádkem ).
Jakýkoli příkaz (příkazy), který se má provést, musí být umístěn uvnitř udělat..hotovo
blok.
Podívejme se na několik jednoduchých příkladů.
Smyčka na rozsahu celočíselných hodnot: Následující kód vytváří adresáře s názvem dir1, dir2, dir3 až do dir10.
for i in {1..10} do mkdir dir$i done
Smyčka na seznamu pevných hodnot: Následující kód vytiskne každý řetězec nebo celé číslo v daném pevném seznamu.
pro i v Ahoj 1 2 3 Nashledanou! do echo $i hotovo
Smyčka na výstupu příkazu: Následující kód zacyklí výstup z ls
a vytiskne název každého souboru v daném formátu.
pro i v `ls` do echo "Název souboru je $i" hotovo
Syntaxe založená na výrazech
V Bash je také možná syntaxe založená na výrazech podobná programovacímu jazyku C:
for ((Výraz 1; Výraz 2; Výraz 3)) do ... ... hotovo
Tady, Výraz 1
je inicializace indexové proměnné (proměnných). Výraz 2
je stav, kdy musí být smyčka opuštěna; tato podmínka je kontrolována v každé iteraci. Výraz 3
specifikuje zvýšení/snížení/změnu hodnoty indexové proměnné (proměnných)
Následující příklad jednoduše vypíše hodnoty od 0 do 4:
for ((i=0;i<5;i++)) do echo $i done
Následující příklad vytváří nekonečnou smyčku, protože nejsou zadány žádné výrazy:
for (( ; ; )) do echo "Stiskněte Ctrl-C pro zastavení" hotovo
Přerušit a pokračovat
Break Statement for Conditional Exit
Můžeme také použít podmíněný příkaz -li
uvnitř smyčky. The -li
příkaz lze použít s a přestávka
pro podmíněný výstup ze smyčky.
for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then break else echo $i; fi hotovo
Výše uvedená smyčka vytiskne čísla od 0 do 4. Poté, když je hodnota i 5, smyčka se opustí. To je zvláště užitečné, když má být smyčka ukončena, když příkaz poskytuje specifický výstup. Například následující smyčka se přeruší, pokud a když najde prázdný soubor.
pro soubor v `ls` do flen=`wc -c $soubor` if [[ "$flen" = "0 $soubor" ]] potom echo "$soubor je prázdný" break else echo $flen fi hotovo
Příkaz wc -c
vytiskne počet řádků v souboru . Vytiskne to ve formátu
, například,
10 test.txt
. Opustíme smyčku, když je počet řádků 0, tj. prázdný soubor.
Pokračovat ve výpisu a podmínečně přeskočit iteraci
Podobně jako C a mnoho dalších programovacích jazyků má bash také a pokračovat
pro přeskočení zbývající části iterace ve smyčce, pokud je splněna určitá podmínka.
for ((i=0;i<10;i++)) proveďte if [[ $i -eq 5 ]] pak pokračujte fi echo $i; Hotovo
Výše uvedený cyklus vytiskne čísla od 0 do 10, kromě 5, protože během iterace i=5
existuje příkaz continue, který přeskočí zbytek kódu ve smyčce na začátku s iterací i=6
.
V následujícím příkladu vytiskneme počet řádků v souboru a konkrétní iteraci pokračovat
pokud je to adresář a ne soubor.
pro soubor v `ls` proveďte if [[ -d $file ]] pak pokračujte fi wc -c "$file" hotovo
[[ -d $file ]]
zkontroluje, zda je soubor adresář. Pokud ano, přeskočíme na další soubor, tedy další iteraci. Pokud se nejedná o adresář, vytiskneme počet řádků v souboru pomocí toaleta
příkaz, jak bylo také ukázáno dříve.
Používání smyček: Skripty a příkazový řádek
Syntaxi smyčky lze použít přímo v shellu Bash nebo ze souboru skriptu shellu. Jednou pro
Cyklus syntaxe je zadán do shellu, shell pokračuje ve výzvě, aby nechal uživatele pokračovat v zacyklení příkazů.
Nebo to může uživatel uložit do souboru skriptu a spustit soubor skriptu.
The #!/bin/bash
na začátku určuje interpret, který se má použít při spuštění souboru. Ačkoli je Bash dnes nejběžněji používaným shellem, někteří uživatelé preferují shelly jako zsh
, který by měl být specifikován místo bash na začátku tohoto souboru.
Udělit oprávnění ke spuštění pro tento soubor spusťte:
chmod +x test.sh
Konečně, spustit soubor, spustit:
./test.sh
Závěr
The pro
smyčka v Bash je docela jednoduchá funkce, ale má své použití v téměř každém druhu složitého scénáře skriptování. Naučit se to jde dlouhou cestou, ať už jste běžný nebo pokročilý uživatel Linuxu nebo se začínáte učit automatizaci pro úlohy správy systému a DevOps.