Jednou ze základních vlastností každého počítačového programovacího jazyka je schopnost opakovaně spouštět část kódu. Šetří to spoustu času a také snižuje počet řádků kódu v programu. Programování Bash umožňuje uživatelům spouštět úlohu znovu a znovu pomocí smyček. V tomto článku se podíváme na Pro smyčku prohlášení.
Pro smyčku příkaz se používá k provedení řady příkazů, dokud se určitá podmínka nestane nepravdivou. Můžete jej například použít ke spuštění linuxového příkazu pětkrát nebo jej použít ke čtení a zpracování souborů v systémech, dokud nedosáhnete konkrétní podmínky.
Příkaz Bash For Loop
Pro smyčku v Bash programování přichází ve dvou různých syntaxích:
- Pro In Loop
for item in (list) do command_one command_two ... done
Ve výše uvedené syntaxi For In Loop jsou čtyři klíčová slova – for, in, do a done. Seznam odkazuje na hodnoty v „seznamu“. Položka je název proměnné, který není klíčovým slovem v programovacím jazyce Bash.
Když program spustíme, provede příkaz v závislosti na počtu položek v „seznamu“. Pokud tedy seznam obsahuje pět číslic (1 2 3 4 5), příkaz se provede pětkrát.
V každé iteraci je hodnota v seznamu uložena v proměnné item a použita v těle programu.
- Smyčka For se syntaxí podobnou programovacímu jazyku C
for (( expression_1; expression_2; expression_3)) do command_one command_two ... done
S výše uvedeným příkazem For Loop, pokud jste vývojář C, C++ nebo Java, měli byste znát syntaxi. ‚výraz_1 znamená inicializaci, výraz_2 znamená podmínku a výraz_3 znamená aktualizaci.
Když program spustíme, před provedením první iterace, která inicializuje hodnoty proměnných pro smyčku For, se vyhodnotí výraz „expression_1“.
Tělo programu se provádí, dokud výraz_2 nebude mít hodnotu TRUE. Tělo programu zde odkazuje na příkazy mezi klíčovými slovy do a done. Nyní, po každé iteraci programu, je vyhodnocen výraz_3.
Když jsme to pochopili, podívejme se na některé příklady Bash For Loop, které můžete využít ve svých každodenních činnostech při práci se systémy Linux. Napíšeme skripty a spustíme je v terminálu. Všimněte si, že všechny Bash skripty používají příponu '.sh.'.
Pomocí For Loop vytiskněte řadu řetězců
Smyčku For In můžete použít k tisku řady řetězců. Podívejte se na kód níže. Tři soubory použité v programu již máme v pracovním adresáři. To je „testFile1“, „testFile2“ a „testFile3“.
#!/bin/bash for item in testFile1 testFile2 testFile3 do cat $item echo "Done with file $item" echo done
Výstup je:
Výše uvedený program vypíše obsah souboru uvedeného v seznamu. To znamená, testFile1, testFile2 a testFile3. Příkaz „cat“ je linuxový nástroj používaný k zobrazení obsahu souboru.
Proto program prochází soubory začínající „testFile1“, provede na něm příkaz „cat“ před tiskem příkazu „done with testFilee“ a iteruje na další soubor.
Po iteraci všech souborů v seznamu se program automaticky ukončí.
„Pro In Loop“ s prvky Array to Backup Files
Smyčku For In můžete použít k iteraci prvků v poli. Podívejte se na kód níže.
#!/bin/bash Files=('testFile1' 'testFile2' 'testFile3') for item in "${Files[@]}"; do cp $item{,.bak} echo "Created a backup of $item" done
Výstup je uveden níže.
Výše uvedený program používá příkaz cp k vytváření záloh souborů v poli. Při iteraci každého souboru vytvoří zálohu dat a před přechodem na další položku v poli vytiskne zprávu „Created Backup message“.
„Pro In Loop“ s rozsahem
Můžete iterovat přes rozsah čísel. Například chcete iterovat mezi číslicemi 1 – 100. Zapsáním všech těchto čísel do vašeho programu bude kód docela velký. Můžeme to vyřešit použitím rozsahů. Podívejte se na kód níže.
#!/bin/bash for i in {0..50} do echo "COUNT: $i" done
Výstup by měl být takový, jak je uvedeno níže.
Z výše uvedeného výstupu vidíme, že program vytiskl čísla 1 – 50. Je to proto, že jsme mu dali rozsah 1 – 50 číslic.
Předpokládejme, že chcete před tiskem výstupu vytvořit rozsah, který přeskočí určitý počet číslic. Potom budeme muset do syntaxe rozsahu zahrnout třetí parametr. Viz kód níže.
#!/bin/bash for i in {0..100..10} do echo "COUNT: $i" done
Výstup by měl být takový, jak je uvedeno níže.
Výstup by měl být takový, jak je uvedeno níže.
Z obrázku výše vidíme, že program vytiskl čísla 0 – 100, ale v každé iteraci vynechal deset (10) číslic.
„Pro smyčku“ se syntaxí programování v jazyce C
Když jsme se podívali na několik příkladů s „For In Loop“, podívejme se na další syntaxi For Loop. Obsahuje výraz inicializace, který inicializuje smyčku, výraz podmínky, který určuje provádění programu, a výraz přírůstek, který aktualizuje hodnotu proměnné.
Podívejte se na kód níže.
#!/bin/bash for (( i=5; i>=1; i-- )) do echo "COUNT: $i" done
Výstup by měl být takový, jak je uvedeno níže.
Vytvořte nekonečnou smyčku pomocí For Loop
K vytvoření nekonečné smyčky v Bash použijeme programovací syntaxi C. Viz kód níže.
#!/bin/bash for (( ; ; )) do echo "Use Ctrl+C to terminate the loop." echo "Starting Infinite Loop..." done
Výstup by měl být takový, jak je uvedeno níže.
Chcete-li se dostat z nekonečné smyčky, stiskněte Ctrl + C pro zrušení procesu.
Příkazy Break and Continue v „For Loop“
Při programování příkazy Break a Continue řídí provádění programu. Příkaz Break ukončí program a opustí smyčku. Příkaz Continue na druhé straně vynutí provedení další iterace programu.
-
Prohlášení o přerušení
Podívejme se na program níže, který využívá příkaz Break.
#!/bin/bash for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux do if [[ "$distro" == 'kali' ]]; then break fi echo "Linux_distribution: $distro" done
Výstup by měl být takový, jak je uvedeno níže.
Z obrázku výše vidíme, že „Kali“ nebylo na výstupu vytištěno. Je to proto, že jsme zadali ‘If Condition’, která zkontrolovala hodnotu, kterou má proměnná ‘distro’. Pokud byla hodnota ‘Kali’, byl proveden příkaz ‘break’ a ukončil smyčku.
Jak můžete vidět, ArchLinux nebyl vytištěn ve výstupu, protože příkaz break ukončil program.
Příkaz Pokračovat
Na rozdíl od příkazu Break příkaz Continue ukončí program na této části, ale vynutí spuštění další iterace programu.
Podívejte se na kód níže.
#!/bin/bash for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux do if [[ "$distro" == 'Kali' ]]; then continue fi echo "Linux_distribution: $distro" done
Výstup by měl být takový, jak je uvedeno níže.
Z obrázku výše vidíme, že „Kali“ nebylo na výstupu vytištěno. Je to proto, že jsme dali ‘If Condition’, která zkontrolovala, aby se zjistila hodnota, kterou má proměnná ‘distro.’ Pokud byla hodnota ‘Kali’, byl proveden příkaz ‘continue’. V tomto bodě ukončil smyčku, ale vynutil si provedení další části programu.
Jak můžete vidět, ‚Kali‘ nebylo vytištěno ve výstupu, zatímco ‚ArchLinux‘ ano. Příkaz Continue vynutil provedení další části programu.
Praktičtější Bash programy využívající smyčku For
Když jsme se podívali na několik programů Bash pomocí příkazu „For Loop“, podívejme se na příklady ze skutečného života, které můžete použít ke správě svých systémů Linux.
- Program Bash pro převod souborů MP3 na WAV
V tomto programu budete potřebovat nástroj MPG123 nainstalovaný ve vašem systému. Níže uvedený kód vyhledá jakýkoli soubor s příponou „.mp3.“ a převede jej na soubor „.wav.“ pomocí nástroje „mpg123“.
#!/bin/bash for item in ./*.mp3 do mpg123 -w music.wav $item.mp3 done
Z obrázku níže vidíme, že jsme převedli „Audio.mp3“ na „Music.wav“.
- Program „For Loop“ ke kontrole, zda existují soubory firefox.desktop.
Níže uvedený program projde všechny soubory v adresáři application/ a poskytne výstup, zda je přítomen firefox.desktop.
#!/bin/bash for item in /usr/share/applications/* do if [ "${item}" == "/usr/share/applications/firefox.desktop" ] then echo "Firefox.Desktop is present in the applications directory"; fi done
Závěr
Nyní, když jste se naučili používat Pro smyčku v programování Bash, vytvořte programy pro automatizaci různých úloh ve vašich systémech Linux. Pokud vám tento článek pomohl, neváhejte a sdílejte odkaz se svými přáteli.