existují dva typy bash pro smyčky k dispozici. Jeden pomocí klíčového slova “ in “ se seznamem hodnot, druhý pomocí programování C jako syntaxe.
tento článek je součástí naší probíhající série Bash tutorial.
to vysvětluje obě metody bash pro smyčky a poskytuje 12 různých příkladů, jak používat bash pro smyčku ve skriptech shellu.
Záložka tento článek pro budoucí použití, protože to je jediný článek, který jste někdy třeba odkazovat na to, jak používat bash pro smyčky s příklady.,
Metoda 1: Bash Pro Smyčce pomocí „v“ a seznam hodnot
Syntaxe:
for varname in listdo command1 command2 ..done
Ve výše uvedené syntaxi:
- pro, v, a udělali to jsou klíčová slova
- „seznam“ obsahuje seznam hodnot. Seznam může být proměnná, která obsahuje několik slov oddělených mezerami. Pokud v příkazu for chybí seznam, pak se vezme Polohový parametr, který byl předán do shellu.
- varname je libovolný název proměnné Bash.
v tomto formuláři provede příkaz for příkazy uzavřené v těle, jednou pro každou položku v seznamu., Pokud například seznam hodnot obsahuje 5 položek, bude smyčka for provedena celkem 5krát, jednou pro každou položku v seznamu. Aktuální položka ze seznamu bude uložena v proměnné „varname“ pokaždé přes smyčku. Tento „varname“ může být zpracován v těle for loop.
Metoda 2: Bash Pro Smyčce pomocí C-jako syntaxe
druhá forma pro smyčky je podobný pro smyčce v „C“ programovací jazyk, který má tři výrazy (inicializace, podmínky a aktualizace).,
for (( expr1; expr2; expr3 ))do command1 command2 ..done
Ve výše bash pro syntaxi příkazu,
- Před první iteraci, expr1 vyhodnocen. To se obvykle používá k inicializaci proměnných pro smyčku.
- všechny příkazy mezi do a done se provádějí opakovaně, dokud není hodnota expr2 pravdivá.
- Po každé iteraci smyčky se vyhodnotí expr3. To se obvykle používá k přírůstku čítače smyček.
následujících 12 příkladů ukazuje, jak bash pro smyčky různými způsoby.,
Statické hodnoty pro seznam po „v“ klíčových slov
V následujícím příkladu, seznam hodnot (po, Út, St, Čt a Pá) jsou přímo uvedeny po klíčové slovo „v“ v bash pro smyčce.
upozornění: seznam hodnot by neměl být oddělen čárkou (Po, Út, St, Čt, Pá). Čárka bude považována za součást hodnoty. tj. namísto “ Mon „použije“ Mon “ jako hodnotu, jak je znázorněno na příkladu níže.
upozornění: seznam hodnot by neměl být uzavřen v dvojité nabídce. („Po Út St Čt Pá“)., Pokud přiložíte dvojitou nabídku, bude s ní zacházeno jako s jednou hodnotou (namísto 5 různých hodnot), jak je znázorněno na příkladu níže.
$ cat for1-wrong2.shi=1for day in "Mon Tue Wed Thu Fri"do echo "Weekday $((i++)) : $day"done$ ./for1-wrong2.shWeekday 1 : Mon Tue Wed Thu Fri
Proměnnou pro seznam po „v“ klíčových slov
Namísto poskytování hodnoty přímo v pro smyčce, můžete uložit hodnoty do proměnné a použít proměnnou pro smyčce po „v“ klíčové slovo, jak je znázorněno v následujícím příkladu.
upozornění: jako nejlepší postup byste měli vždy citovat proměnné bash, když je odkazujete. Existuje jen málo výjimek z tohoto pravidla osvědčených postupů. Tohle je jeden z nich., Pokud v této smyčce dvakrát citujete proměnnou, bude seznam hodnot považován za jednu hodnotu. Do této pasti spadá spousta lidí. Buďte opatrní a nevykládejte svou proměnnou do smyčky for.
neuvádějte seznam; získejte jej z pozičních parametrů
Pokud nezadáte Klíčové slovo “ in “ následované jakýmkoli seznamem hodnot v bash pro smyčku, použije polohové parametry (tj. argumenty, které jsou předány skriptu shellu).
pozor: pokud používáte tuto metodu, buďte opatrní. Neměli byste zahrnout Klíčové slovo“ in “ do smyčky for., Pokud necháte Klíčové slovo “ in “ bez jakýchkoli hodnot, nebude používat Polohový parametr, jak je uvedeno níže. Nebude to jít dovnitř smyčky. i. e pro smyčku se nikdy neprovede, jak je znázorněno na příkladu níže.
$ cat for3-wrong.shi=1for day indo echo "Weekday $((i++)) : $day"done$ ./for3-wrong.sh Mon Tue Wed Thu Fri
Poznámka: podívejte se na náš předchozí článek, abyste pochopili více o polohových parametrech bash.
Unix příkaz výstup jako seznam hodnot po „v“ klíčových slov
můžete použít výstup z jakékoliv UNIX / Linux příkazového jako seznam hodnot pro smyčce uzavřením příkazu v back-klíšťata ` ` jak je uvedeno níže.,
procházet soubory a adresáře v pro smyčce
procházet soubory a adresáře v rámci určitého adresáře, jen cd do tohoto adresáře, a dát * v pro smyčky, jak je znázorněno níže.
následující příklad bude procházet všechny soubory a adresáře v domovském adresáři.
použití * v bash for loop je podobné souboru globbing, který používáme v příkazovém řádku linux, když používáme příkaz ls (a další příkazy).
například následující zobrazí všechny soubory a adresáře v domovském adresáři., Toto je koncept, který se používá ve výše uvedeném for5.sh příklad.
cd ~ls *
následující zobrazí všechny *.conf soubor, který začíná buď A, b, nebo, c nebo d v adresáři /etc.
$ ls -1 /etc/*.conf/etc/asound.conf/etc/autofs_ldap_auth.conf/etc/cas.conf/etc/cgconfig.conf/etc/cgrules.conf/etc/dracut.conf
stejný argument, který se používá v příkazu ls výše, lze použít v bash pro smyčku, jak je znázorněno na příkladu níže.
vymanit se z for loop
můžete vymanit z for loop pomocí příkazu‘ break‘, jak je uvedeno níže.,
$ cat for6.shi=1for day in Mon Tue Wed Thu Frido echo "Weekday $((i++)) : $day" if ; then break; fidone$ ./for6.shWeekday 1 : MonWeekday 2 : Tue
Pokračovat z horní části pro smyčce
Za určitých podmínek, můžete ignorovat ostatní příkazy v pro smyčky, a pokračovat smyčky z vrcholu znovu (pro další hodnotu v seznamu), pomocí příkazu continue, jak je uvedeno níže.
následující příklad přidává“ (víkend) „do Sat a Sun a“ (všední den) “ do zbytku dnů.
Bash pro smyčku pomocí syntaxe programu C
tento příklad používá 2. metodu bash pro smyčku, která je podobná syntaxi C pro smyčku., Následující příklad generuje 5 náhodné číslo pomocí bash C-styl pro smyčku.
9. Nekonečný Bash pro smyčku
když neposkytnete start, stav a přírůstek ve stylu bash C pro smyčku, stane se nekonečnou smyčkou. Chcete-li zastavit smyčku, musíte stisknout Ctrl-C.
$ cat for9.shi=1;for (( ; ; ))do sleep $i echo "Number: $((i++))"done
jak jsme řekli výše, stiskněte Ctrl-C, abyste vymanili z tohoto Bash infinite pro smyčkový příklad.,
$ ./for9.shNumber: 1Number: 2Number: 3
použití čárky ve stylu bash C pro smyčku
ve smyčce stylu bash C, kromě zvýšení hodnoty, která se používá ve stavu, můžete také zvýšit nějakou jinou hodnotu, jak je uvedeno níže.
v sekci inicializace a v části přírůstku bash C-style for loop můžete mít více hodnot oddělením čárkou, jak je uvedeno níže.
následující pro smyčku se provádí celkem 5krát, pomocí proměnné i. proměnná j však začíná 5 a při každém spuštění smyčky se zvyšuje o 5.,
$ cat for10.shfor ((i=1, j=10; i <= 5 ; i++, j=j+5))do echo "Number $i: $j"done$ ./for10.shNumber 1: 10Number 2: 15Number 3: 20Number 4: 25Number 5: 30
Rozsah čísel po „v“ klíčových slov
můžete procházet pomocí rozsahu čísel v pro smyčky „v“ pomocí ortézy expanzi.
následující příklad smyčky přes 10 krát pomocí hodnot 1 až 10.
$ cat for11.shfor num in {1..10}do echo "Number: $num"done$ ./for11.shNumber: 1Number: 2Number: 3Number: 4Number: 5...
Rozsah čísel s přírůstky po „v“ klíčových slov
následující příklad smyčky až 5 krát pomocí hodnot 1 až 10, krok 2. to znamená, že začíná 1 a stále roste o 2, dokud nedosáhne 10.,
$ cat for12.shfor num in {1..10..2}do echo "Number: $num"done$ ./for12.shNumber: 1Number: 3Number: 5Number: 7Number: 9
PS: nezapomeňte si tento článek uložit do záložek pro budoucí použití.
Pokud se vám to líbilo tento článek, můžete také rád..
|
|