Hogyan írjunk BASH-ot "a" Loop "-ra

A BASH "for" hurok használata a héj scriptekben

A BASH (ami Bourne Again Shell-t jelent) egy olyan szkriptnyelv, amelyet a legtöbb Linux és UNIX alapú operációs rendszer használ.

A BASH parancsokat a terminál ablakban futtathatja egymás után, vagy hozzáadhatja a parancsokat egy szövegfájlhoz shell script készítéséhez.

A nagyszerű dolog az írás parancsfájlok írása, hogy újra és újra futtathatja őket. Képzeld el például, hogy fel kell venni egy felhasználót egy rendszerbe, be kell állítani az engedélyeket és kezelnie kell a kezdő környezetet. Leírhatod a parancsokat egy papírlapra, és futtathatod őket új felhasználók hozzáadásakor, vagy írhatsz egy szkriptet, és csak átmásolhatod a paramétereket a szkriptbe.

A BASH programozási nyelvének hasonló programozási konstrukciói vannak, mint más nyelvek. Például importálhat paramétereket a billentyűzetről történő bevitelhez, és tárolhatja őket változóként. Ezután megkaphatja a parancsfájlt egy bizonyos művelet elvégzésére a bemeneti paraméterek értéke alapján .

A programozás és a szkriptnyelv kulcsfontosságú része az, hogy ugyanazt a kódot újra és újra futtathatja.

A kód megismétlésének számos módja (más néven ciklus). Ebben az útmutatóban megmutatjuk, hogyan kell írni a "for" hurkot.

Az A for loop ismételten megismétli a kód egy bizonyos részét. Hasznosak ahhoz, hogy egy sor parancs tovább működjön, amíg egy adott feltétel nem teljesül, és ezután leállnak.

Ebben az útmutatóban öt módon láthatod a for loop-ot a BASH szkriptben.

Mielőtt elkezdené

Mielőtt elkezdené a for loop példáit, nyisson meg egy terminál ablakot, és kövesse az alábbi lépéseket:

  1. Adja meg az mkdir parancsfájlokat ( itt többet megtudhat az mkdirről )
  2. Írja be a cd szkripteket (ez megváltoztatja a könyvtárat a szkriptekre )
  3. Adja meg a nano examplen.sh nevet (ahol n az a példa, amelyen dolgozol)
  4. Írja be a szkriptet
  5. Nyomja meg a CTRL + O billentyűkombinációt a mentéshez, és a CTRL + X gombot a kilépéshez
  6. Indítsd el a bash examplen.sh parancsot (újra, n pedig a példa, amivel dolgozol)

Hogyan keressünk egy listát

#! / Bin / bash
a szám 1 2 3 4 5-ben
csinál
echo $ szám
Kész
kilépés a 0-ból

A "for" hurok használatának BASH módja némiképp különbözik attól, ahogyan a legtöbb programozási és szkriptnyelv a legtöbbet kezeli. Letoldd le a szkriptet ...

Egy BASH "for" hurok mindegyikénél a mindegyik és a befejezett állítások a listában szereplő minden elemre egyszer kerülnek végrehajtásra.

A fenti példában a lista minden, ami a szó beadása után következik (pl. 1 2 3 4 5).

Minden alkalommal, amikor a ciklus megismétli, a lista következő értéke a "for" szó után megadott változóba kerül. A fenti hurokban a változó neve.

Az echo utasítás a képernyőn megjelenő információk megjelenítésére szolgál.

Ezért ez a példa az 1-től 5-ig terjedő számokat veszi fel, és ezeket egyenként adja ki a képernyőn:

Hogyan kezdődhet és végpont között hurokhat

A fenti példával kapcsolatos probléma az, hogy ha nagyobb listát szeretne feldolgozni (mondjuk 1-től 500-ig), az évekig minden számot be kellene írni.

Ezzel a második példához vezetünk, amely megmutatja, hogyan kell megadni egy kezdő és végpontot:

#! / Bin / bash
a szám {1..10}
csinál
echo "$ number"
Kész
kilépés a 0-ból

A szabályok alapvetően ugyanazok. Az " in" szó után az értékek a lista sorrendjét adják át, és a listában szereplő értékek a változóba kerülnek (azaz a szám), és minden egyes alkalommal, amikor a ciklus megismétli, végrehajtják a megtörtént és befejezett állításokat.

A fő különbség a lista kialakításának módja. A göndör zárójelek {} alapvetően egy tartományt jeleznek, és a tartomány ebben az esetben 1 és 10 között van (a két pont elkülöníti a tartomány kezdetét és végét).

Ez a példa tehát minden számon 1-től 10-ig terjed, és a számot a képernyőn a következőképpen adja ki:

Ugyanaz a hurok írható volna így, az első példával azonos szintaxissal :

a szám 1-ben 1 2 3 4 5 6 7 8 9 10

Hogyan lehet kihagyni a számokat egy tartományban?

Az előző példában megmutattuk, hogyan kell a kezdet és a végpont között hurokozni, így most megnézzük, hogy hogyan kell kihagyni a számokat a tartományban.

Képzelje el, hogy 0 és 100 között szeretne hurokozni, de csak tizedik számot jelenít meg. A következő parancsfájl megmutatja, hogyan kell csinálni:

#! / Bin / bash
a szám {0..100..10}
csinál
echo "$ number"
Kész
kilépés a 0-ból

A szabályok alapvetően ugyanazok. Van egy lista, egy változó, és egy sor utasítás, amelyet végre kell hajtani a do és done között . A lista ezúttal így néz ki: {0..100..10}.

Az első szám 0, és a végső szám 100. A harmadik szám (10) a listán szereplő elemek száma, amelyek kihagyják.

A fenti példa tehát a következő kimenetet jeleníti meg:

Egy hagyományosabb keresi a hurot

A ciklusok BASH írásmódja kissé különös, mint más programozási nyelvekhez képest.

A C-programozási nyelvhez hasonló stílusú stílushoz írhatsz például:

#! / Bin / bash
a ((szám = 1, szám <100, szám ++) számára)
{
ha (($ szám% 5 == 0))
akkor
echo "$ szám osztható 5"
fi
}
kilépés a 0-ból

A hurok úgy kezdődik, hogy a változószámot 1-re állítja (szám = 1 ). A hurok ismételni fog, míg a szám értéke kisebb, mint 100 ( szám <100 ). A szám értéke megváltozik hozzáadásával minden egyes iteráció után ( szám: + ).

A göndör befogók között minden a ciklus minden egyes iterációján keresztül történik.

A zárójelek között lévő bit ellenőrzi a szám értékét, osztja meg 5 értékkel, és összehasonlítja a maradékot 0-ra. Ha a maradék 0, akkor a szám öt részre osztható, és ezután megjelenik a képernyőn.

Például:

Ha meg akarja változtatni az iteráció lépésméretét, akkor a szám ++ szekció számát = számot + 2 , számot = számot + 5 , számot + számot stb.

Ez tovább csökkenthető a + = 2 vagy a + 5 értékűre .

Gyakorlati példa

A hurkok többet tehetnek, mint a számok ismétlése. Valójában a többi parancs kimenetét is használhatja.

Az alábbi példa bemutatja, hogyan lehet audio fájlokat konvertálni MP3-ből WAV-ba :

#! / Bin / bash

A példában szereplő lista az aktuális mappában lévő .MP3 kiterjesztésű fájl, és a változó fájl .

Az mpg parancs átalakítja az MP3 fájlt WAV-ba. Azonban valószínűleg ezt a csomagkezelő segítségével kell telepítenie.