V tomto tématu pochopíme použití pro smyčku ve skriptech Bash.
Stejně jako jakýkoli jiný programovací jazyk také skriptování bash shell také podporuje „cykly for“ pro provádění opakujících se úkolů. Pomáhá nám iterovat konkrétní sadu příkazů přes řadu slov v řetězci nebo prvky v poli. Například můžete buď spustit UNIXový příkaz (nebo úlohu) mnohokrát nebo jen číst a zpracovávat seznam příkazů pomocí „smyčky for“.
Syntaxe For Loop
Můžeme použít 'for loop' na bash skript dvěma způsoby. Jeden způsob je 'for-in' a jiný způsob je syntaxe ve stylu c. Následuje syntaxe 'for loop' ve skriptování bash shell:
for variable in list do commands done
Nebo
for (( expression1; expression2; expression3 )) do commands done
Existuje několik klíčových bodů příkazu „for loop“:
- Každý blok 'for loop' v bash začíná klíčovým slovem 'do' následovaným příkazy uvnitř bloku. Příkaz „for loop“ je uzavřen klíčovým slovem „done“.
- Doba, po kterou se bude opakovat „cyklus for“, závisí na deklarovaných proměnných seznamu.
- Smyčka vybere jednu položku ze seznamu a přiřadí hodnotu proměnné, která bude použita v rámci smyčky.
- Po provedení příkazů mezi 'do' a 'done' se smyčka vrátí na začátek a vybere další položku ze seznamu a celý proces zopakuje.
- Seznam může obsahovat čísla nebo řetězec atd. oddělené mezerami.
Některé příklady „smyčky for“ jsou uvedeny níže, aby ilustrovaly, jak fungují:
Základní příklad „For Loop“.
Bash skript
#!/bin/bash #This is the basic example of 'for loop'. learn='Start learning from Javatpoint.' for learn in $learn do echo $learn done echo 'Thank You.'
Výstup
Pro smyčku pro čtení rozsahu
Bash skript
#!/bin/bash #This is the basic example to print a series of numbers from 1 to 10. for num in {1..10} do echo $num done echo 'Series of numbers from 1 to 10.'
Výstup
Pro smyčku pro čtení rozsahu s přírůstkem/snižováním
Zadanou hodnotu můžeme zvýšit nebo snížit přidáním dvou dalších teček (..) a hodnoty postupně, např. {START..END..INCREMENT}. Podívejte se na příklad níže:
Pro přírůstek
#!/bin/bash #For Loop to Read a Range with Increment for num in {1..10..1} do echo $num done
Výstup
Pro snížení
#!/bin/bash #For Loop to Read a Range with Decrement for num in {10..0..1} do echo $num done
Výstup
Pro smyčku pro čtení proměnných pole
K iteraci hodnot pole můžeme použít „cyklus for“.
modifikační klávesy
Syntaxi lze definovat jako:
array=( 'element1' 'element 2' . . 'elementN' ) for i in '${arr[@]}' do echo $i done
Výstup
Pro každý prvek v 'array' se provedou příkazy nebo sada příkazů od 'do' do 'done'. Ke každému prvku lze přistupovat jako „i“ v rámci smyčky pro příslušnou iteraci. Podívejte se na níže uvedený příklad vysvětlující použití „smyčky for“ k iteraci prvků pole:
Bash skript
#!/bin/bash #Array Declaration arr=( 'Welcome''to''Javatpoint' ) for i in '${arr[@]}' do echo $i done
Výstup
Pro smyčku ke čtení mezery v řetězci jako oddělovače slov
Syntaxi lze definovat takto:
#!/bin/bash for word in $str; do done
Tady, str odkazuje na řetězec.
Příkazy od 'do' do 'done' se provádějí pro každé 'slovo' řetězce. Podívejte se na příklad níže:
Bash skript
#!/bin/bash #For Loop to Read white spaces in String as word separators str='Let's start learning from Javatpoint.' for i in $str; do echo '$i' done
Výstup
Pro smyčku číst každý řádek v řetězci jako slovo
Syntaxi lze definovat následovně:
#!/bin/bash for word in '$str'; do done
Zde jsou příkazy od 'do' do 'done' provedeny pro každý 'řádek' řetězce. Podívejte se na příklad níže:
Bash skript
Rozvržení mřížky
#!/bin/bash #For Loop to Read each line in String as a word str='Let's start learning from Javatpoint.' for i in '$str'; do echo '$i' done
Výstup
Poznámka: Jediný rozdíl mezi 'Pro smyčku číst mezery v řetězci jako oddělovače slov' a 'Pro smyčku číst každý řádek v řetězci jako slovo' jsou dvojité uvozovky kolem proměnné řetězce.
Pro Loop to Read Tři výrazy
Syntaxe tří výrazů je nejběžnější syntaxí 'smyčky for'. První výraz se týká procesu inicializace, druhý výraz se týká ukončení a třetí výraz se týká zvýšení nebo snížení.
Podívejte se na níže uvedený příklad pro tisk 1 až 10 čísel pomocí tří výrazů se smyčkou for:
Bash skript
#!/bin/bash #For Loop to Read Three-expression for ((i=1; i<=10; i++)) do echo '$i' done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-8.webp" alt="Bash For Loop"> <h3>For Loop with a Break Statement</h3> <p>A 'break' statement can be used inside 'for' loop to terminate from the loop.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash #Table of 2 for table in {2..100..2} do echo $table if [ $table == 20 ]; then break fi done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-9.webp" alt="Bash For Loop"> <h3>For Loop with a Continue Statement</h3> <p>We can use the 'continue' statement inside the 'for' loop to skip any specific statement on a particular condition. It tells Bash to stop executing that particular iteration of the loop and process the next iteration.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash #Numbers from 1 to 20, ignoring from 6 to 15 using continue statement' for ((i=1; i<=20; 5 16 i++)); do if [[ $i -gt && -lt ]]; then continue fi echo done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-10.webp" alt="Bash For Loop"> <h3>Infinite Bash For Loop</h3> <p>When there is no 'start, condition, and increment' in the bash three expressions for loop, it becomes an infinite loop. To terminate the infinite loop in Bash, we can press Ctrl+C.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash i=1; for (( ; ; )) do sleep 1s echo 'Current Number: $((i++))' done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-11.webp" alt="Bash For Loop"> <h2>Conclusion</h2> <p>In this topic, we discussed how to use for loop statement in Bash to perform specific tasks</p> <hr></=20;></pre></=10;>
Výstup
Pro smyčku s příkazem Continue
Můžeme použít příkaz 'continue' uvnitř cyklu 'for' k přeskočení jakéhokoli konkrétního příkazu pro konkrétní podmínku. Řekne Bashovi, aby zastavil provádění této konkrétní iterace smyčky a zpracoval další iteraci.
Bash skript
#!/bin/bash #Numbers from 1 to 20, ignoring from 6 to 15 using continue statement' for ((i=1; i<=20; 5 16 i++)); do if [[ $i -gt && -lt ]]; then continue fi echo done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-10.webp" alt="Bash For Loop"> <h3>Infinite Bash For Loop</h3> <p>When there is no 'start, condition, and increment' in the bash three expressions for loop, it becomes an infinite loop. To terminate the infinite loop in Bash, we can press Ctrl+C.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash i=1; for (( ; ; )) do sleep 1s echo 'Current Number: $((i++))' done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-11.webp" alt="Bash For Loop"> <h2>Conclusion</h2> <p>In this topic, we discussed how to use for loop statement in Bash to perform specific tasks</p> <hr></=20;>
Výstup
Závěr
V tomto tématu jsme diskutovali o tom, jak používat příkaz for loop v Bash k provádění konkrétních úkolů
=20;>=10;>