Android

Bash a hurokért

Shell Scripting Tutorial for Beginners 19 - FOR loop

Shell Scripting Tutorial for Beginners 19 - FOR loop

Tartalomjegyzék:

Anonim

A hurkok a programozási nyelvek egyik alapvető fogalma. A hurkok akkor hasznosak, ha parancsok sorozatát szeretné újra és újra futtatni, amíg egy bizonyos feltétel teljesül.

A szkriptnyelvekben, például a Bash, a hurkok hasznosak az ismétlődő feladatok automatizálásában.

Három alapvető hurokkonstrukció van a Bash szkriptekben, a hurokhoz, míg a hurokhoz és a hurokig.

Ebben az oktatóanyagban a hurkok alapjait ismertetjük Bashban. Megmutatjuk azt is, hogyan lehet használni a break és a folytatás utasításokat a hurok folyamatának megváltoztatására.

A hurok standard bashája

A for hurok az elemek listáján iterál, és végrehajtja az adott parancsot.

A „Bash for loop” formája a következő:

for item in do done

A lista sztringek sorozata lehet, szóközökkel elválasztva, számtartomány, parancs kiadása, tömb stb.

Hurok a húrok felett

Az alábbi példában a hurok a karakterláncok listáján minden elemnél megismétlődik, és a változó element az aktuális elemre lesz állítva.

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

A hurok a következő kimenetet fogja produkálni:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

Húzza át egy számtartományt

A szekvencia kifejezéssel megadhatja a számok vagy karakterek tartományát, meghatározva a tartomány kezdetét és végpontját. A szekvencia kifejezés a következő formájú:

{START..END}

Az alábbi példában a hurok minden 0-tól 3-ig számol.

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

A Bash 4-től kezdve a tartományok használatakor meg lehet adni a növekményt is. A kifejezés a következőképpen alakul:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

Hurkosítson át tömb elemeket

A for hurkot is felhasználhatja az elemek tömbjének iterálására:

Az alábbi példában egy tömböt definiálunk, és a tömb minden elemére iterálunk.

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

C-stílusú Bash hurokhoz

A hurok C-stílusának szintaxisa a következőképpen alakul:

for ((INITIALIZATION; TEST; STEP)) do done

Az INITIALIZATION rész csak egyszer kerül végrehajtásra, amikor a hurok elindul. Ezután kiértékeljük a TEST részt. Ha ez hamis, akkor a for hurok megszakad. Ha a TEST igaz, akkor a for ciklus testén belüli parancsok végrehajtásra kerülnek, és a STEP rész frissül.

A következő kódban a hurok csillaggal jelzi az i = 0 inicializálását, majd minden iteráció előtt ellenőrzi, hogy i ≤ 10 . Ha igaz, akkor az i és i aktuális értékét 1-gyel ( i++ ) kinyomtatja, különben a hurok véget ér.

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

A hurok 1001-szer iterál, és a következő kimenetet hozza létre:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

Break és folytassa nyilatkozatokat

A break és folytatás utasítások felhasználhatók a hurok végrehajtásának vezérlésére.

Break nyilatkozat

A törés utasítás megszünteti az aktuális hurkot, és a programvezérlést átadja a megszüntetett utasítást követő utasításnak. Ezt általában a hurok lezárására használják, amikor egy bizonyos feltétel teljesül.

A következő példában az if utasítást használjuk a hurok végrehajtásának befejezésére, ha az aktuális iterált elem megegyezik a „lítiummal”.

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!

Folytassa a nyilatkozatot

A folytatás utasítás kilép a hurok aktuális iterációjáról, és a programvezérlést átadja a hurok következő iterációjának.

A következő példában egy sorozaton át iterálunk, és amikor az aktuális iterált elem értéke "2", akkor a folytatás utasítás visszaadja a végrehajtást a hurok elejére és folytatja a következő iterációval.

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

Bash hurok példák

Fájlok átnevezése szóközzel a fájlnévben

A következő példa bemutatja, hogyan lehet a Bash for hurkot felhasználva átnevezni az aktuális könyvtár összes fájlját szóközzel a nevében az alhúzás helyére cserélve.

for file in *\ *; do mv "$file" "${file// /_}" done

Bontjuk le a kódot soronként:

  • Az első sor létrehoz egy for hurkot, és az összes fájl listáján iterál, amelynek a nevében szóköz van. A *\ * kifejezés létrehozza a listát. A második sor a lista minden elemére vonatkozik, és a fájlt egy új helyre helyezi, helyettesítve a szóközt aláhúzással ( _ ). A (z) ${file// /_} rész a héjparaméter-bővítést használja, hogy a paraméter belsejében levő mintát karakterláncra cserélje. done jelzi a hurok szegmens végét.

A fájlkiterjesztés megváltoztatása

A következő példa bemutatja, hogyan lehet a Bash for hurkot felhasználni az.dpeg-vel végződő fájlok átnevezésére az aktuális könyvtárban, a.jpeg-ről a.jpg-re történő kiterjesztés kicserélésével.

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

Elemezzük a kódot soronként:

  • Az első sor létrehoz egy for hurkot, és az összes fájl listájában megismétli a '.jpeg'-vel végződő fájlok listáját. A második sor a lista minden elemére vonatkozik, és a fájlt egy újra helyezi, a ".jpeg" helyébe a.jpg. ${file%.jpeg} eltávolítja a „.jpeg” részt a fájlnévből a végrehajtott héjparaméter-kiterjesztéssel jelzi a hurokszakasz végét.

Következtetés

Mostanra jól meg kell értenie, hogy a bash for loop felhasználásával a listákban ismétlődik.

bash hurok terminál