12 Bash pentru exemple de buclă pentru scripting Linux shell

12 Bash pentru exemple de buclă pentru scripting Linux shell

există două tipuri de bash pentru bucle disponibile. Unul folosind cuvântul cheie ” in ” cu lista de valori, altul folosind programarea C ca sintaxa.acest articol face parte din seria noastră de tutoriale bash.

aceasta explică ambele metode bash pentru buclă și oferă 12 Exemple diferite despre cum să utilizați bash pentru buclă în scripturile shell.
marcați acest articol pentru referințe viitoare, deoarece acesta este singurul articol la care ar trebui să vă referiți vreodată cum să utilizați bash pentru bucle cu exemple.,

Metoda 1: Bash pentru buclă folosind „in” și lista de valori

sintaxa:

for varname in listdo command1 command2 ..done

în sintaxa de mai sus:

  • pentru, în, do și done sunt cuvinte cheie
  • „lista” conține lista de valori. Lista poate fi o variabilă care conține mai multe cuvinte separate prin spații. Dacă lista lipsește în instrucțiunea for, atunci este nevoie de parametrul pozițional care a fost trecut în shell.
  • varname este orice nume de variabilă Bash.

în această formă, instrucțiunea for execută comenzile închise într-un corp, o dată pentru fiecare element din listă., De exemplu, dacă lista de valori conține 5 elemente, bucla for va fi executată în total de 5 ori, o dată pentru fiecare element din listă. Elementul curent din listă va fi stocat într-o variabilă „varname” de fiecare dată prin buclă. Acest „varname” poate fi procesat în corpul buclei for.

Metoda 2: Bash pentru buclă folosind sintaxa C ca

a doua formă a buclei for este similară cu bucla for din limbajul de programare „C”, care are trei expresii (inițializare, condiție și actualizare).,

for (( expr1; expr2; expr3 ))do command1 command2 ..done

În cele de mai sus bash pentru comandă sintaxă,

  • Inainte de prima iterație, expr1 se evaluează. Aceasta este de obicei folosită pentru inițializarea variabilelor pentru buclă.
  • toate declarațiile dintre do și done sunt executate în mod repetat până când valoarea expr2 este adevărată.
  • după fiecare iterație a buclei, expr3 este evaluat. Aceasta este de obicei folosită pentru a crește un contor de buclă.următoarele 12 Exemple arată cum să bash pentru bucle în moduri diferite.,

    valorile statice pentru listă după cuvântul cheie” in ”

    în exemplul următor, lista de valori (Mon, Tue, Wed, Thu și Fri) sunt date direct după cuvântul cheie „in” în bash pentru buclă.atenție: lista valorilor nu trebuie separată prin virgulă (Mon, Tue, Wed, Thu, Fri). Virgula va fi tratată ca parte a valorii. adică în loc de” Mon”, se va folosi” Mon”, ca valoare așa cum se arată în exemplul de mai jos.

    atenție: lista de valori nu trebuie inclusă într-un citat dublu. („Mon Mar Wed Jo Vi”)., Dacă încadrați în Citat dublu, acesta va fi tratat ca o singură valoare (în loc de 5 valori diferite), așa cum se arată în exemplul de mai jos.

    $ 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

    Variabilă pentru lista dupa „în” cuvinte cheie

    în Loc de a furniza valorile direct în buclă, puteți stoca valori într-o variabilă, și de a folosi variabila de buclă după „în” cuvânt-cheie, așa cum se arată în următorul exemplu.

    atenție: ca o bună practică, ar trebui să citeze întotdeauna variabilele bash atunci când se referă la ea. Există câteva excepții de la această regulă privind cele mai bune practici. Acesta este unul dintre ei., Dacă dublu citat variabila în această buclă, lista de valori vor fi tratate ca o singură valoare. Mulți oameni cad în această capcană. Fii atent și nu dublu citat variabila în bucla pentru.

    nu specificați lista; obțineți-o din parametrii poziționali

    dacă nu specificați cuvântul cheie „in” urmat de orice listă de Valori din bucla bash pentru, va folosi parametrii poziționali (adică argumentele care sunt transmise scriptului shell).Atenție: Vă rugăm să aveți grijă dacă utilizați această metodă. Nu trebuie să includeți cuvântul cheie ” in ” în bucla for., Dacă lăsați cuvântul cheie ” in ” fără valori, acesta nu va utiliza parametrul pozițional așa cum se arată mai jos. Nu va intra în buclă. adică pentru buclă nu va fi executat așa cum se arată în exemplul de mai jos.

    $ cat for3-wrong.shi=1for day indo echo "Weekday $((i++)) : $day"done$ ./for3-wrong.sh Mon Tue Wed Thu Fri

    notă: consultați articolul nostru anterior pentru a înțelege mai multe despre parametrii poziționali bash.

    ieșire comandă Unix ca valori listă după cuvântul cheie” in „

    puteți utiliza ieșirea oricărei comenzi Unix / Linux ca listă de valori pentru bucla for, anexând comanda în back-ticks ” așa cum se arată mai jos.,

    buclă prin fișiere și directoare într-o buclă pentru

    pentru a bucla prin fișiere și directoare sub un anumit director, doar cd la acel director, și să dea * în bucla pentru așa cum se arată mai jos.

    următorul exemplu va bucla prin toate fișierele și directoarele din Directorul de acasă.

    utilizarea * în bash pentru buclă este similară cu globbing-ul de fișiere pe care îl folosim în linia de comandă linux atunci când folosim comanda ls (și alte comenzi).

    de exemplu, următoarele vor afișa toate fișierele și directoarele din directorul dvs. de pornire., Acesta este conceptul folosit în cele de mai sus for5.sh exemplu.

    cd ~ls *

    următoarele vor afișa toate *.conf fișier care începe fie cu a, b, sau, c sau d Sub /etc director.

    $ ls -1 /etc/*.conf/etc/asound.conf/etc/autofs_ldap_auth.conf/etc/cas.conf/etc/cgconfig.conf/etc/cgrules.conf/etc/dracut.conf

    același argument care este utilizat în comanda ls de mai sus, poate fi utilizat într-un bash pentru buclă, așa cum se arată în exemplul de mai jos.

    ieșiți din bucla for

    puteți ieși dintr-o buclă for folosind comanda „break” așa cum se arată mai jos.,

    $ 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

    Continuare din partea de sus pentru bucla

    În anumite condiții, puteți ignora restul de comandă în buclă, și continua bucla din partea de sus din nou (pentru următoarea valoare din listă), folosind continua comanda de mai jos.

    următorul exemplu adaugă” (WEEKEND) „la Sat și soare și” (zi lucrătoare) ” la restul zilelor.

    Bash pentru buclă folosind sintaxa programului c

    Acest exemplu utilizează metoda 2ND de bash pentru buclă, care este similară cu sintaxa c Pentru Buclă., Următorul exemplu generează 5 număr aleatoriu folosind bash C-style Pentru Buclă.

    9. Bash infinit pentru buclă

    când nu furnizați începutul, condiția și incrementul în stilul bash C Pentru Buclă, acesta va deveni buclă infinită. Trebuie să apăsați Ctrl-C pentru a opri bucla.

    $ cat for9.shi=1;for (( ; ; ))do sleep $i echo "Number: $((i++))"done

    așa cum am spus mai sus, apăsați Ctrl-C pentru a ieși din acest bash infinit pentru exemplu buclă.,

    $ ./for9.shNumber: 1Number: 2Number: 3

    Utilizarea virgulă în bash, C-stil pentru bucla

    În bash, c-stil buclă, în afară de incrementa valoarea care este utilizat în stare, de asemenea, puteți incrementa o altă valoare așa cum se arată mai jos.

    în secțiunea inițializare și în secțiunea incrementare a stilului bash C pentru buclă, puteți avea valoare multiplă separând cu virgulă așa cum se arată mai jos.

    următoarele pentru bucla este executat un total de 5 ori, folosind variabila i. cu toate acestea, variabila J începe cu 5, și obținerea increment cu 5 de fiecare dată când bucla este executat.,

    $ 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

    gama de numere după” in „cuvânt cheie

    puteți bucla prin utilizarea gama de numere în bucla pentru” in ” folosind extinderea bretele.

    următorul exemplu bucle prin 10 ori folosind valorile de la 1 la 10.

    $ cat for11.shfor num in {1..10}do echo "Number: $num"done$ ./for11.shNumber: 1Number: 2Number: 3Number: 4Number: 5...

    Gama de numere cu trepte de după „în” cuvinte cheie

    următorul exemplu bucle prin 5 ori folosind valori de la 1 la 10, cu o creștere de 2. adică începe cu 1 și continuă să crească cu 2, până când ajunge la 10.,

    $ cat for12.shfor num in {1..10..2}do echo "Number: $num"done$ ./for12.shNumber: 1Number: 3Number: 5Number: 7Number: 9

    PS: nu uitați să marcați acest articol pentru referințe viitoare.

    > Adauga comentariu

    Dacă ți-a plăcut acest articol, s-ar putea dori, de asemenea..

    1. 50 de Linux Sysadmin Tutoriale
    2. 50 cele Mai Frecvent Utilizate Comenzi Linux (Cu Exemple)
    3. Top 25 cele mai Bune Linux de Monitorizare a Performanței și Instrumente de Depanare
    4. Mami, am găsit-o!,l>
    • Awk Introduction – 7 Awk Print Examples
    • Advanced Sed Substitution Examples
    • 8 Essential Vim Editor Navigation Fundamentals
    • 25 Most Frequently Used Linux IPTables Rules Examples
    • Turbocharge PuTTY with 12 Powerful Add-Ons


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *