GNU/Linux >> Znalost Linux >  >> Linux

Bash for smyčky Příklady

Ve skriptu shellu je mnoho případů, kdy chcete opakovaně provádět příkaz nebo skupinu příkazů, dokud nenastane určitá zadaná podmínka. Kromě toho můžete chtít provést skupinu příkazů pro každý prvek v určitém seznamu. Shell poskytuje tři smyčkové konstrukce pro tyto situace:konstrukce for, while a till.

Smyčka for umožňuje zadat seznam hodnot. Pro každou hodnotu v seznamu se provede skupina příkazů.

Pro syntaxi smyčky

Smyčka for v shellu bere jako argument seznam slov (řetězců). Počet slov v seznamu určuje, kolikrát jsou provedeny příkazy v cyklu for. Syntaxe cyklu for je:

for variable in element1 element2 element3 
do
	commands 
done

kde:

  • proměnná :Jde o libovolný název proměnné.
  • prvky (seznam_argumentů) :Může to být jakýkoli seznam slov, řetězců nebo čísel a může být doslovný nebo generovaný pomocí příkazu shellu nebo metaznaku příkazového řádku shellu.
  • příkazy :Příkazy mohou být libovolné příkazy operačního systému, uživatelský program, skript shellu nebo příkaz shellu, který vrací (vytváří) seznam.

Hodnota proměnné var je při prvním průchodu smyčkou nastavena na první slovo v seznamu. Při druhém průchodu smyčkou se jeho hodnota nastaví na druhé slovo v seznamu a tak dále. Cyklus se ukončí, když var postupně převezme každou z hodnot ze seznamu argumentů a nezůstávají žádné argumenty.

Seznam argumentů pro smyčku

Seznam argumentů ve smyčce for může být libovolný seznam slov , řetězce nebo čísla . Vygenerujte seznam argumentů pomocí libovolné z následujících metod (nebo kombinací metod):

  • Použijte explicitní seznam
  • Použijte obsah proměnné
  • Používejte argumenty příkazového řádku
  • Použijte substituci příkazů
  • Při nahrazování příkazů používejte názvy souborů

Příklad 1 :Cyklus For s použitím Explicitního seznamu ke specifikaci argumentů

Když jsou argumenty uvedeny pro cyklus for, nazývají se explicitní seznam. Explicitní seznam je nejjednodušší formou seznamu argumentů. Cyklus se provede jednou pro každý prvek seznamu. Následující příklad je smyčka for využívající explicitní seznam prvků:

#!/bin/bash
for fruit in apple orange banana peach kiwi 
do
    echo "Value of fruit is: $fruit"
done

Výstup tohoto cyklu for je:

Value of fruit is: apple 
Value of fruit is: orange 
Value of fruit is: banana 
Value of fruit is: peach 
Value of fruit is: kiwi

Příklad 2:Pro smyčku s proměnným obsahem ke specifikaci argumentů

Když jsou argumenty v proměnné a příkaz je proveden, obsah proměnné se nahradí. V následujícím příkladu se text zadaný na výzvu stane hodnotou proměnné INPUT. Tato proměnná představuje seznam argumentů konstrukce for. Proto je text v INPUT rozdělen na slova nebo tokeny na základě mezer.

$ cat ex1.sh 
#!/bin/bash
# Script name: ex1.sh
echo "Enter some text: \c" 
read INPUT
for var in $INPUT 
do
	echo "var contains: $var"
done
$ ./ex1.sh
Enter some text: I like the Bash shell. 
var contains: I
var contains: like
var contains: the
var contains: Korn
var contains: shell.

Příklad 3 :Cyklus For pomocí argumentů příkazového řádku ke specifikaci argumentů

V následujícím příkladu se text zadaný na příkazovém řádku stane seznamem argumentů konstruktu for. Proto je text příkazového řádku rozdělen na slova nebo tokeny na základě mezer.

$ cat ex2.sh
#!/bin/bash
# Script name: ex2.sh
for var in $* 
do
	echo "command line contains: $var"
done
$ ./ex2.sh I am The Geek.
command line contains: I
command line contains: am
command line contains: The
command line contains: Geek.

Příklad 4:Smyčka For Použití substituce příkazů k určení argumentů

Syntaxe pro substituci příkazů v prostředí Bash je:

for var in `cmd_sub`

Následující příklad používá výstup příkazu cat jako seznam argumentů.

$ cat fruit1 
apple 
orange 
banana 
peach
kiwi
$ cat ex4.sh 
#!/bin/bash
# Script name: ex4.sh
for var in `cat fruit2` 
do
	echo "var contains: $var"
done
$ ./ex4.sh
var contains: Apple 
var contains: Orange 
var contains: Banana 
var contains: Peach 
var contains: Kiwi

Pokud byl soubor obsahující seznam v následujícím formátu, jaký je výsledek cyklu for.

$ cat fruit3
Apple Orange Banana Peach Kiwi
$ cat ex5.sh 
#!/bin/bash
# Script name: ex5.sh
for var in `cat fruit3` 
do
	echo "$var"
done
$ ./ex5.sh
Apple 
Orange 
Banana 
Peach 
Kiwi

Ve výše uvedeném příkladu se výsledky nemění. Proměnná IFS je jakákoli mezera, takže každé pole v souboru odděluje jak návrat vozíku, tak mezera nebo tabulátor.

Příklad 5 :Cyklus pro použití názvů souborů v substituci příkazů ke specifikaci argumentů

Některé příkazy poskytují jako výstup názvy souborů a adresářů. V následujícím příkladu shell nahradí výstup příkazu, ls /etc/p*(/etc/passwd/etc/profilea tak dále), jako seznam argumentů pro cyklus for.

$ cat ex7.sh 
#!/bin/bash
# Script name: ex7.sh
for var in `ls /etc/p*`
do
	print "var contains: $var"
done
# ./x.sh 
var contains: /etc/passwd
var contains: /etc/passwd-
var contains: /etc/printcap
var contains: /etc/profile
....
Příklady smyček Bash if (if then fi, if then elif fi, if then else fi)


Linux
  1. Bash pro průvodce smyčkou a příklady

  2. Skriptování v Linuxu:3 postupy pro smyčky while v Bash

  3. The Bash ‘?

  1. Jak napsat smyčku v Bash

  2. Udržujeme vás ve smyčce – příklady opakování pro, Zatímco, dokud

  3. Vnořená smyčka for

  1. Paralelizovat Bash For Loop?

  2. Příklady Bash for Loop a While Loop

  3. 12 Bash pro příklady smyček pro vaše skriptování prostředí Linux