Shell Scripting - For Loops
Cuprins:
- Bash standard pentru buclă
- Buclați-vă peste șiruri
- Buclați pe un interval de numere
- Buclați-vă peste elemente de matrice
- Bash-ul în stil C pentru buclă
- Declarații de pauză și continuare
- Declarație de pauză
- Continuați declarația
- Bash For Loop Exemple
- Redenumirea fișierelor cu spații din numele fișierului
- Modificarea extensiei de fișier
- Concluzie
Buclele sunt unul dintre conceptele fundamentale ale limbajelor de programare. Buclele sunt la îndemână atunci când doriți să rulați o serie de comenzi de mai multe ori până când se ajunge la o anumită condiție.
În limbaje de script cum ar fi Bash, buclele sunt utile pentru automatizarea sarcinilor repetitive.
Există trei construcții de buclă de bază în scriptul Bash, pentru buclă, loop, și până la buclă.
În acest tutorial, vom acoperi elementele de bază pentru bucle în Bash. Vă vom arăta, de asemenea, cum să utilizați instrucțiunile de pauză și continuare pentru a modifica fluxul unei bucle.
Bash standard pentru buclă
Bucla for iterează o listă de elemente și execută setul de comenzi dat.
Bash pentru buclă are următoarea formă:
for item in do done
Lista poate fi o serie de șiruri separate prin spații, o gamă de numere, ieșirea unei comenzi, un tablou și așa mai departe.
Buclați-vă peste șiruri
În exemplul de mai jos bucla va itera peste fiecare element din lista șirurilor, iar
element
variabil va fi setat la elementul curent.
for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done
Bucla va produce următoarea ieșire:
Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium
Buclați pe un interval de numere
Puteți utiliza expresia secvenței pentru a specifica o gamă de numere sau caractere, prin definirea unui început și a punctului final al intervalului. Expresia de secvență are următoarea formă:
{START..END}
În exemplul de mai jos bucla va itera prin toate numerele de la 0 la 3.
for i in {0..3} do echo "Number: $i" done
Number: 0 Number: 1 Number: 2 Number: 3
Pornind de la Bash 4, este posibilă, de asemenea, să specificați o creștere atunci când utilizați intervale. Expresia ia următoarea formă:
{START..END..INCREMENT}
for i in {0..20..5} do echo "Number: $i" done
Number: 0 Number: 5 Number: 10 Number: 15 Number: 20
Buclați-vă peste elemente de matrice
Puteți utiliza, de asemenea, bucla for pentru a itera peste o serie de elemente:
În exemplul de mai jos, definim o carte
BOOKS
și o repetăm pe fiecare element al tabloului.
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done
Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby
Bash-ul în stil C pentru buclă
Sintaxa stilului C pentru buclă are următoarea formă:
for ((INITIALIZATION; TEST; STEP)) do done
Partea
INITIALIZATION
se execută o singură dată la pornirea buclei. Apoi, se evaluează partea
TEST
. Dacă este fals, bucla for este încheiată. Dacă
TEST
este adevărat, comenzile din corpul de buclă sunt executate și partea
STEP
este actualizată.
În codul următor, bucla stea prin inițializarea
i = 0
, apoi înainte de fiecare iterație verifică dacă
i ≤ 10
. Dacă este adevărat, acesta imprimă valoarea curentă a
i
și
i
cu 1 (
i++
) altfel bucla se termină.
for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done
Bucla va itera de 1001 ori și va produce următoarea ieșire:
Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000
Declarații de pauză și continuare
Instrucțiunile de pauză și continuare pot fi utilizate pentru a controla execuția buclei.
Declarație de pauză
Instrucțiunea pauză încheie bucla curentă și trece controlul programului la instrucțiunea care urmează instrucțiunea încheiată. De obicei este folosit pentru a încheia bucla atunci când este îndeplinită o anumită condiție.
În exemplul următor, folosim instrucțiunea if pentru a încheia execuția buclei odată ce elementul iteratat curent este egal cu „Litiu”.
for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'
Element: Hydrogen Element: Helium All Done!
Continuați declarația
Instrucțiunea continuare iese din iterația curentă a unei bucle și trece controlul programului la următoarea iterație a buclei.
În exemplul următor, vom itera printr-o serie de numere și atunci când elementul iteratat curent este egal cu „2”, instrucțiunea continuare va determina execuția să revină la începutul buclei și să continue cu iterația următoare.
for i in {1..5}; do if]; then continue fi echo "Number: $i" done
Number: 1 Number: 3 Number: 4 Number: 5
Bash For Loop Exemple
Redenumirea fișierelor cu spații din numele fișierului
Următorul exemplu arată cum să utilizați Bash pentru buclă pentru a redenumi toate fișierele din directorul curent cu un spațiu în numele sale, înlocuind spațiul pentru subliniere.
for file in *\ *; do mv "$file" "${file// /_}" done
Haideți să descompunem codul rând cu linie:
- Prima linie creează o buclă pentru și se iterează printr-o listă cu toate fișierele cu un spațiu pe numele său. Expresia
*\ *creează lista. A doua linie se aplică fiecărui element din listă și mută fișierul într-unul nou, înlocuind spațiul cu o subliniere (_). Partea${file// /_}utilizează expansiunea parametrilor shell pentru a înlocui un model dintr-un parametru cu un șir.doneindică sfârșitul segmentului de buclă.
Modificarea extensiei de fișier
Următorul exemplu arată cum să utilizați Bash pentru buclă pentru a redenumi toate fișierele care se termină cu.jpeg în directorul curent, înlocuind extensia de fișier de la.jpeg la.jpg.
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done
Să analizăm codul linie după linie:
- Prima linie creează o buclă pentru și se iterează printr-o listă cu toate fișierele care se termină cu '.jpeg'. A doua linie se aplică fiecărui element din listă și mută fișierul într-unul nou înlocuind '.jpeg' cu '.jpg'.
${file%.jpeg}pentru a elimina partea „.jpeg” din numele fișierului folosind expansiunea parametrului shelldoneindică sfârșitul segmentului de buclă.
Concluzie
Până acum, ar trebui să înțelegeți cum să utilizați bash-ul pentru a bucla pentru a repeta listele.
terminal de buclă bashSetul cu căști Bluetooth Motorola H790 <80> (sau mai puțin) este un preț excelent pentru acest headset Motorola H790, care oferă cea mai mare parte a calității de telefon. > Ușor, confortabil și discret: Așa aș descrie potrivirea modelului Motorola H790. Această setare cu cască Bluetooth atrăgătoare (80 $ din 8/6/09) oferă o buclă de plastic peste ureche. Deoarece bucla nu are flexibilitatea de a curba în jurul urechii, ea rămâne în forma sa fixă. Desigur, bucla pare chintită, dar, spre surprind
Urechea sa simțit bine în canalul urechii mele; Oamenii cu urechi mai mari pot încerca sortimentul de șuruburi pentru înlocuire pentru a obține o potrivire mai bună. H790 abia mi-a atins obrazul, dar a rămas fixat la ureche când m-am îndreptat și mi-am mutat capul în toate direcțiile.
Bash până la buclă
În limbaje de script cum ar fi Bash, buclele sunt utile pentru automatizarea sarcinilor repetitive. Acest tutorial explică elementele de bază ale buclei până în Bash. Bucla până este folosită pentru a executa un set dat de comenzi, atât timp cât condiția dată este evaluată la fals.
Bash în timp ce bucla
Buclele sunt unul dintre conceptele fundamentale ale limbajelor de programare. Buclele sunt la îndemână, dacă doriți să rulați o serie de comenzi de mai multe ori. Acest tutorial explică elementele de bază ale buclelor în timp ce Bash, precum și declarațiile de pauză și continuare pentru a modifica fluxul unei bucle.







