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.
A mert hurok megismétli a kód egy bizonyos szakaszát újra és újra. 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:
-
Belép mkdir parancsfájlok (itt többet megtudhat az mkdirről).
-
Belép cd szkriptek (ez megváltoztatja a könyvtárat szkriptek ).
-
Belép nano examplen.sh (hol n az a példa, amelyen dolgozol).
-
Írja be a szkriptet.
-
nyomja meg CTRL + O menteni és CTRL + X kilépni.
-
Fuss bash examplen.sh (ismét, a n a példa, amivel dolgozol).
Hogyan keressünk egy listát
#! / bin / bashfor szám 1 2 3 4 5doecho $ numberdoneexit 0
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. A BASH "for" hurok mindegyikében a kijelentések között csinál és Kész a lista minden elemére egyszer kerül sor. A fenti példában a lista minden, ami a szó után következik ban ben (azaz 1 2 3 4 5). Minden alkalommal, amikor a ciklus megismétli, a lista következő értéke a szó után megadott változóba kerül „A” . A fenti hurokban a változó neve szám . 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: 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 / bashfor szám {1..10} doecho "$ number" -ban doneexit 0
A szabályok alapvetően ugyanazok. Az értékek a " ban ben" állítsa be a listát, hogy átkerüljön, és a listában szereplő értékek a változóba kerüljenek (azaz a szám), és minden egyes alkalommal, amikor a ciklus iterálja, csinál és Kész elő vannak adva. 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: szám 1-ben 1 2 3 4 5 6 7 8 9 10 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 / bashfor szám {0..100..10} doecho "$ number" doneexit 0
A szabályok alapvetően ugyanazok. Van egy lista, egy változó és egy sor utasítás, amelyet végre kell hajtani csinál és Kész . 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: 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 / bashfor ((szám = 1; szám <100; szám ++)) {if (($ szám% 5 == 0)) thenecho "$ szám osztható 5" fi}
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 ). Az értéke szám változások hozzáadásával 1 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ötti bit ellenőrzi az a értékét szám , osztja meg 5-szel, és összehasonlítja a maradékot 0-ra. Ha a fennmaradó rész 0, akkor a szám öt 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, módosítsa a számot ++ szekciót száma = szám + 2 , száma = szám + 5 , vagy száma = szám + 10 stb. Ez tovább csökkenthető száma + = 2 vagy száma + = 5 . 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 / basha ./*.mp3dompg -w ./wavs/"${file}".wav fájlban "$ file" kész
A példában szereplő lista az aktuális mappában lévő .MP3 kiterjesztésű fájl, és a változó a fájl . A mpg parancs az MP3 fájlt WAV-ba konvertálja. Azonban valószínűleg ezt a csomagkezelő segítségével kell telepítenie.
Hogyan kezdődhet és végpont között hurokhat
Hogyan lehet kihagyni a számokat egy tartományban?
Egy hagyományosabb keresi a hurot
Gyakorlati példa