The Geek Diary
sokszor van egy shell script, ha azt szeretné, hogy ismételten végre egy nyilatkozatot vagy csoport nyilatkozatok, amíg néhány meghatározott feltétel bekövetkezik. Ezenkívül előfordulhat, hogy egy adott lista egyes elemeihez egy csoport kijelentést szeretne végrehajtani. A héj három hurok konstrukciót biztosít ezekre a helyzetekre: A for, míg, amíg konstrukciók.
A for hurok lehetővé teszi az értékek listájának megadását. A lista minden egyes értékére egy kimutatáscsoport kerül végrehajtásra.
A hurok szintaxis
A for hurok a shell vesz egy listát a szavak (húrok), mint egy érv. A listában szereplő szavak száma határozza meg, hogy hányszor hajtják végre a for hurokban szereplő kijelentéseket. A For loop szintaxisa:
for variable in element1 element2 element3 do commands done
ahol:
- változó: ez bármilyen változó neve.
- elemek (argument_list): lehet szó, karakterlánc vagy szám bármely listája, amely szó szerint vagy shell parancs vagy shell-parancssor metacharacter használatával generálható.
- parancsok: A parancsok lehetnek bármilyen operációs rendszer parancsok, egy felhasználói program, egy shell script, vagy egy shell utasítás, amely visszatér (termel) egy listát.
a var változó értéke a lista első szavára van beállítva, először a hurokon keresztül. A második alkalommal a hurokon keresztül az értéke a lista második szavára van állítva, stb. A ciklus akkor fejeződik be, amikor a VAR az argumentumlistából minden egyes értéket átvett, viszont nincsenek fennmaradó argumentumok.
A For Loop argumentum lista
Az argumentum lista a For loop lehet bármilyen szavak, karakterláncok, vagy számok. Generál az argumentum lista használja a következő módszerek egyikét (vagy kombinált módszer):
- a kifejezett lista
- Használja a tartalma változó
- a parancssori argumentumok
- Használat parancsot helyettesítő
- a fájl nevét a parancs helyettesítő
1. Példa : A hurok használata Kifejezett Listát adja meg Érveket
Ha az érvek felsorolt egy for ciklus, ezek az úgynevezett kifejezett lista. Az explicit lista az argumentumlista legegyszerűbb formája. A hurok minden listaelemhez egyszer kerül végrehajtásra. A következő példa egy for ciklus segítségével kifejezett lista elemek:
#!/bin/bashfor fruit in apple orange banana peach kiwi do echo "Value of fruit is: $fruit"done
A kimenet ez a hurok:
Value of fruit is: apple Value of fruit is: orange Value of fruit is: banana Value of fruit is: peach Value of fruit is: kiwi
2. Példa : A hurok használata Változó Tartalmát, hogy Meghatározza, Érvek
Ha az érvek egy változó, illetve a nyilatkozat kivégezték, a változó tartalma helyettesített. A következő példában a prompt-ban megadott szöveg a változó bemenet értékévé válik. Ez a változó képviseli az argumentum lista a konstrukció. Ezért a bevitt szöveg fehér tér alapján szavakra vagy tokenekre oszlik.
$ cat ex1.sh #!/bin/bash# Script name: ex1.shecho "Enter some text: \c" read INPUTfor var in $INPUT do echo "var contains: $var"done
$ ./ex1.shEnter some text: I like the Bash shell. var contains: Ivar contains: likevar contains: thevar contains: Kornvar contains: shell.
3.példa : parancssori argumentumokat használó hurok esetén a következő példában a parancssorba bevitt szöveg lesz a konstrukció argumentumlistája. Ezért a parancssori szöveg fehér szóköz alapján szavakra vagy tokenekre oszlik.
$ cat ex2.sh#!/bin/bash# Script name: ex2.shfor var in $* do echo "command line contains: $var"done
$ ./ex2.sh I am The Geek.command line contains: Icommand line contains: amcommand line contains: Thecommand line contains: Geek.
4. példa : A
$ cat ex2.sh#!/bin/bash# Script name: ex2.shfor var in $* do echo "command line contains: $var"done
$ ./ex2.sh I am The Geek.command line contains: Icommand line contains: amcommand line contains: Thecommand line contains: Geek.
argumentumokat használó hurok esetén a parancshelyettesítés szintaxisa a Bash shell-ben:
for var in `cmd_sub`
a következő példa a cat parancs kimenetét használja argumentumlistaként.
$ cat fruit1 apple orange banana peachkiwi
$ cat ex4.sh #!/bin/bash# Script name: ex4.shfor var in `cat fruit2` do echo "var contains: $var"done
$ ./ex4.shvar contains: Apple var contains: Orange var contains: Banana var contains: Peach var contains: Kiwi
Ha a listát tartalmazó fájl a következő formátumban volt, mi a hurok eredménye.
$ cat fruit3Apple Orange Banana Peach Kiwi
$ cat ex5.sh #!/bin/bash# Script name: ex5.shfor var in `cat fruit3` do echo "$var"done
$ ./ex5.shApple Orange Banana Peach Kiwi
a fenti példában az eredmények nem változnak. Az IFS változó bármilyen fehér tér, így mind a kocsi visszatérése, mind a szóköz vagy a lap elválasztja a fájl minden mezőjét.
5. példa: a parancshelyettesítésben a fájlneveket használó hurok argumentumokat ad meg
egyes parancsok fájlneveket és könyvtárneveket adnak ki kimenetként. A következő példában a shell helyettesíti a parancs kimenetét, ls / etc / p*(/etc / passwd / etc / profileés így tovább), mint a for loop argumentumlistája.
$ cat ex7.sh #!/bin/bash# Script name: ex7.shfor var in `ls /etc/p*`do print "var contains: $var"done
# ./x.sh var contains: /etc/passwdvar contains: /etc/passwd-var contains: /etc/printcapvar contains: /etc/profile....
Leave a Reply