Ինչպես գրել Bash WHILE-Loops

Հրամաններ, շարահյուսություն եւ օրինակներ

Դուք կարող եք կատարել հրամանների հաջորդականությունը, դրանք գրելով սցենարով եւ այնուհետեւ վարում:

Սցենար ֆայլը պարզապես տեքստային ֆայլ է, սովորաբար .SH ֆայլի ընդլայնում, որը պարունակում է հրահանգների հերթականությունը, որը կարող է կատարվել նաեւ հրամանի տողից ( shell ):

Չնայած հանգույցների օրինակներ

Ստորեւ բերված է մի հանգույցի օրինակ: Երբ կատարվում է, այս սցենարի ֆայլը կտարբերվի էկրանին 1-ից 9-ը: The while- հայտարարությունը ձեզ ավելի շատ ճկունություն է տալիս դադարեցման պայմանն ընդգծելու համար, քան նախատիպը :

#! / bin / bash count = 1, մինչդեռ [$ count -le 9] -ը echo "$ count" sleep 1 ((count ++)) արել

Օրինակ, նախորդ սցենարը կարող եք անսահման հանգույց թողնել, ավելացնելով «((count ++))» հավելյալ հայտարարությունը:

#! / bin / bash count = 1, մինչդեռ [$ count -le 9] կատարեք echo «$ count» քուն 1

«Երազ 1» հայտարարությունը դադարեցնում է յուրաքանչյուր ատրկերում 1 վայրկյանից կատարումը: Օգտագործեք Ctrl + C ստեղնաշարի դյուրանցումը `գործընթացը դադարեցնելու համար:

Դուք նաեւ կարող եք ստեղծել անսահման հանգույց `դնելով կույտ` որպես պայման:

#! / bin / bash count = 1, մինչդեռ կատարեք echo "$ count" քուն 1 ((count ++))

Որոշ ժամանակահատվածում բազմակի պայմանների օգտագործման համար դուք պետք է օգտագործեք կրկնակի քառակուսի փակագիծը:

[$ count = 9] && [$ done == 0]] = "count count" sleep 1 ((count ++)) եթե [$ count == 5]; ապա $ done = 1 fi done

Այս սցենարի մեջ փոփոխական «արել» փոփոխված է 0-ին եւ այնուհետեւ `1-ին, երբ հաշվարկը հասնում է 5-ի: Անցումային հանգույցը նշում է, որ while loop- ը կշարունակվի այնքան ժամանակ, քանի« հաշվարկը »9-ից պակաս է, իսկ« արել »հավասար է զրոյին: Հետեւաբար հանգույցները դուրս են գալիս, երբ հաշվարկը հավասար է 5-ը:

"&&" նշանակում է տրամաբանական "եւ" եւ "||" նշանակում է տրամաբանական "կամ":

Այլ պայմաններ «եւ» եւ «կամ» պայմանների համար «-a» եւ «-o» եզակի քառակուսի փակագծերի համար: Վերոնշյալ պայմանը `

[[$ count -le 9] եւ & [$ done == 0]]

... կարող էր վերագրվել, ինչպես:

[$ count -le 9] -a [$ done == 0]

Տեքստային ֆայլի ընթերցումը սովորաբար կատարվում է մի ժամանակ հանգույցով: Հետեւյալ օրինակում, bash- ի սցենարն ընթերցում է բովանդակության գիծը `« inventory.txt:

Ֆայլը = inventory.txt exec 6

Առաջին տողը մուտքագրում է ֆայլի անունը «FILE» փոփոխականին: Երկրորդ գիծը պահպանում է «ստանդարտ մուտքագրումը» «6» ֆայլի նկարագրության մեջ (այն կարող է լինել 3-ից 9-ը): Սա կատարվում է այնպես, որ «ստանդարտ մուտքագրումը» կարող է վերականգնվել սցենարի վերջում «0» descriptor- ի նկարագրության համար (տես, «exec 0» - ի 3-րդ շարքում մուտքագրման ֆայլը նշանակված է «0» ստանդարտ մուտքագրման համար: «կարդալ» արտահայտությունը այնուհետեւ կարդում է յուրաքանչյուր վերահղման վրա ֆայլի տողը եւ այն տալիս է «line1» փոփոխականին:

Որպեսզի ժամանակից շուտ դուրս գալու համար դուք կարող եք օգտագործել ընդմիջման հայտարարությունը հետեւյալը.

count = 1 = 0, իսկ [$ count -le 9], echo «$ count» քուն 1 ((count ++)) եթե [$ count == 5] ապա կոտրել fi done echo Finished

Ընդմիջման հայտարարությունը բացում է ծրագրի կատարումը մինչեւ վերջ, իսկ հետո կատարում է ցանկացած հայտարարություն: Այս պարագայում «echo ավարտված» հայտարարությունը:

Հաջորդ հայտարարությունը, մյուս կողմից, անցնում է ընթացիկ ուռուցքի մնացած ժամանակաշրջանի հանգույցի հայտարարության մեջ եւ ուղղակիորեն անցնում է հաջորդ կրոնափոխությանը.

[$ count -le 9] 1-ին ((count ++) քաշը, եթե [$ count == 5], ապա շարունակեք fi echo «$ count» կատարված echo Ավարտված

Այս դեպքում «շարունակել» հայտարարությունը կատարվում է այն ժամանակ, երբ փոփոխական «հաշվարկը» հասնում է 5-ի: Սա նշանակում է, հաջորդ հայտարարությունը (echo «$ count») չի կատարվում այս վերափոխման վրա (երբ «հաշվարկի» արժեքը 5 է):