Bash Range: Hogyan lehet iterálni a héjon generált szekvenciákat

Bash Range How Iterate Over Sequences Generated Shell



A számok sorozatát bash -ban kétféleképpen ismételheti meg. Az egyik a használata sor parancs, a másik pedig a ciklus tartományának megadásával. Ban ben sor parancsot, a sorozat eggyel kezdődik, a szám eggyel növekszik minden lépésben, és alapértelmezés szerint kinyomtat minden számot minden sorban a felső határig. Ha a szám a felső határtól kezdődik, akkor minden lépésben eggyel csökken. Általában minden szám lebegőpontos, de ha a sorozat egész számból indul, akkor a tizedes egészek listája kinyomtatásra kerül. Ha a seq parancs sikeresen végrehajtható, akkor 0-t ad vissza, ellenkező esetben bármilyen nullától eltérő számot ad vissza. Azt is megismételheti a számsorozatot a ciklus ciklus használatával. Mindkét sor parancsot és a ciklustartományt ebben az oktatóanyagban példák segítségével mutatjuk be.

A seq parancs lehetőségei:

Te tudod használni sor parancsot a következő lehetőségek használatával.







-ban ben

Ez az opció a számok kezdő nullákkal való kitöltésére szolgál, hogy minden azonos szélességű számot kinyomtasson.



-f formátumban

Ez az opció a szám nyomtatására szolgál bizonyos formátumban. A lebegő szám formázható úgy, hogy %f, %g és %e konverziós karaktereket használ. A %g alapértelmezett.



-s húr

Ez az opció a számok karakterlánccal történő elválasztására szolgál. Az alapértelmezett érték az újsor („ n”).





Példák a seq parancsra:

A seq parancsot háromféleképpen alkalmazhatja. Csak a felső határt vagy a felső és alsó korlátot vagy a felső és alsó korlátot használhatja az egyes lépések növekményével vagy csökkentésével. A következő példákban bemutatjuk a seq parancs különböző lehetőségeit az opciókkal.

1. példa: seq parancs opció nélkül

Ha csak a felső korlátot használja, akkor a szám 1 -től kezdődik, és minden lépésben eggyel növekszik. A következő parancs kinyomtatja a számot 1 -től 4 -ig.



$sor 4

Kimenet:

Ha a két értéket használja a seq paranccsal, akkor az első érték lesz a kezdő szám, a második pedig a befejező szám. A következő parancs 7 -től 15 -ig nyomtatja ki a számot.

$sor 7 tizenöt

Kimenet:

Ha három értéket használ a seq paranccsal, akkor a második érték lesz növekmény vagy csökkenés értékként minden lépésnél. A következő parancsnál a kezdő szám 10, a végszám 1 és minden lépés 2 -es csökkenéssel lesz számolva.

$sor 10 -2 1

Kimenet:

2. példa: soros –w opcióval

A következő parancs kinyomtatja a kimenetet úgy, hogy az 1 -től 9 -ig terjedő szám első nulláját adja hozzá.

$sor -ban ben0110

Kimenet:

3. példa: soros –s opcióval

A következő parancs minden egyes sorszám elválasztóját használja. A számsor kinyomtatásra kerül - elválasztóként.

$sor -s-8

Kimenet:

4. példa: soros -f opcióval

A következő parancs 10 dátumértéket nyomtat ki 1 -től kezdődően. Itt a %g opciót használjuk a sorszám hozzáadásához más karakterlánc értékekkel.

$sor -f '%g/04/2018' 10

Kimenet:

Bash Range

A következő parancs a lebegőpontos számok sorozatának létrehozására szolgál a %f használatával. Itt a szám 3 -tól kezdődik, és minden lépésben 0,8 -mal nő, és az utolsó szám 6 -nál kisebb vagy egyenlő.

$sor -f '%f' 3 0.8 6

Kimenet:

5. példa: Írja be a sorozatot egy fájlba

Ha a számsort egy fájlba szeretné menteni anélkül, hogy a konzolon nyomtatna, akkor használja a következő parancsokat. Az első parancs kinyomtatja a számokat egy elnevezett fájlba sor. txt . A szám 5 és 20 között lesz, és minden lépésben 10 -gyel növekszik. A második parancs a tartalom megtekintésére szolgál sor. txt fájlt.

$ 5 10 20 | macska> soros.txt
$ cat seq.txt

Kimenet:

6. példa: Seq in használata ciklushoz

Tegyük fel, hogy fn1 - fn10 nevű fájlokat szeretne létrehozni a ciklushoz a következővel. Hozzon létre egy sq1.bash nevű fájlt, és adja hozzá a következő kódot. A ciklus 10 -szer iterál a seq paranccsal, és 10 fájlt hoz létre az fn1, fn2, fn3… ..fn10 sorozatban.

#!/bin/bash
számáraénban ben ``sor 10``
tedd
érintésfn.$ i
Kész

Kimenet:

Futtassa a következő parancsokat a bash fájl kódjának végrehajtásához, és ellenőrizze, hogy a fájlok létrejöttek -e vagy sem.

$bashsq1.bash
$ls

Példák a tartományhoz tartozó hurokra:

7. példa: Tartományú hurokhoz

A seq parancs alternatívája a tartomány. A ciklus tartománya segítségével a számsorozatokat generálhatja, mint pl. Írja be a következő kódot egy bash fájlba sq2.bash . A ciklus 5 -ször ismétlődik, és minden lépés négyzetgyökét kinyomtatja minden lépésben.

#!/bin/bash
számáranban ben {1..5}
tedd
((eredmény= n*n))
kidobta $ n négyzet=$ eredmény
Kész

Kimenet:

Futtassa a parancsot a fájl szkriptjének végrehajtásához.

$bashsq2.bash

8. példa: Tartomány és növekmény értékű hurok esetén

Alapértelmezés szerint a szám eggyel növekszik a tartomány minden lépésében, például a sorban. A tartomány növekményét is módosíthatja. Írja be a következő kódot egy bash fájlba sq3.bash . A forgatókönyv for ciklusa 5 -ször ismétlődik, minden lépés 2 -vel növekszik, és minden páratlan számot 1 és 10 között nyomtat.

#!/bin/bash
kidobta 'minden páratlan szám 1 -től 10 -ig'
számáraénban ben {1..10..2}
tedd
kidobta $ i;
Kész

Kimenet:

Futtassa a parancsot a fájl szkriptjének végrehajtásához.

$bashsq3.bash

Ha a számsorral szeretne dolgozni, akkor az oktatóanyagban bemutatott lehetőségek bármelyikét használhatja. Az oktatóanyag befejezése után hatékonyabban használhatja a seq parancsot és a loop with range parancsot a bash szkriptben.