Როგორ დავწეროთ Bash Whil- მარყუჟების

ბრძანებები, სინტაქსი და მაგალითები

თქვენ შეგიძლიათ შეასრულოთ ბრძანების თანმიმდევრობა შრიფტის ფაილის სახით და შემდეგ გაშვებით.

სკრიპტის ფაილი უბრალოდ ტექსტური ფაილია, როგორც წესი. SH ფაილის გაფართოება, რომელიც შეიცავს ინსტრუქციების თანმიმდევრობას, რომელიც შეიძლება შესრულდეს ბრძანების ( shell ).

მიუხედავად იმისა, რომ Loop მაგალითები

ქვემოთ მოყვანილია მაგალითი მარყუჟის დროს. შესრულებისას, ამ სკრიპტის ფაილი ეკრანზე ნომრის 1-დან 9-ის ბეჭდვაშია. ხოლო განცხადება - უფრო მეტ შესაძლებლობას გაძლევთ შეწყვეტის პირობების დაზუსტება, ვიდრე მარყუჟისთვის .

#! / bin / bash count = 1 ხოლო [$ count -le 9] echo "$ count" ძილის 1 ((count ++)) გაკეთდა

მაგალითად, შეგიძლიათ გააკეთოთ წინა სკრიპტი უსასრულო მარყუჟის მიერ ნამატი განცხადების გამოტოვებით "(count ++)):

#! / bin / bash count = 1 ხოლო [$ count -le 9] echo "$ count" ძილის 1 გაკეთდა

"ძილის 1" განცხადება პატიმრობას იწყებს 1 წამში აღსრულების შესახებ. გამოიყენეთ Ctrl + C კლავიშთა კომბინაცია პროცესის შეწყვეტისთვის.

თქვენ ასევე შეგიძლიათ შექმნათ უსასრულო მარყუჟის მიერ კოლონის გადაცემის გზით:

#! / bin / bash count = 1 while: do echo "$ count" sleep 1 ((count + +)) გაკეთდა

ორმხრივი სარკეში სხვადასხვა პირობების გამოყენების მიზნით თქვენ უნდა გამოვიყენოთ ორმაგი კვადრატული ფრჩხილის ნოტაცია:

count = 1 done = 0 ხოლო [[$ count -le 9] && [$ done == 0]] echo "$ count" ძილის 1 ((count ++)) თუ [$ count == 5]; მაშინ $ გაკეთდა = 1 fi გაკეთდეს

ამ სცენარში, ცვლადი "გაკეთებულია" ინიციალიზირებულია 0-მდე და შემდეგ 1-ს მიუთითებს, როდესაც რაოდენობა აღწევს 5. მარყუჟის მდგომარეობის მიხედვით, ხოლო loop გაგრძელდება მანამ, სანამ "რაოდენობა" ნაკლებია, ვიდრე ცხრა და "შესრულებულია" ნულოვანი. ამიტომ მარყუჟების გასასვლელი, როდესაც რიცხვი შეადგენს 5.

"&&" ნიშნავს ლოგიკური "და" და "||" ნიშნავს ლოგიკური "ან".

ალტერნატიული ნოტაცია კონიუნებისთვის "და" და "ან" პირობებში არის "-ა" და "ო" ერთ კვადრატულ ფრჩხილებთან ერთად. ზემოთ მდგომარეობა:

[[$ count -le 9] && [$ გაკეთდეს == 0]]

... შეიძლება გადაწერილი იყოს:

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

წაკითხვის ტექსტური ფაილი, როგორც წესი, კეთდება ხნით loop. შემდეგ მაგალითში, bash სცენარი ნათქვამია შინაარსი ხაზის მიერ ხაზი სახელწოდებით "inventory.txt:"

FILE = inventory.txt exec 6

პირველი ხაზი მიუთითებს შეყვანის ფაილის სახელი "FILE" ცვლადში. მეორე ხაზი ინახავს "სტანდარტული შეყვანის" ფაილის აღწერს "6" (ეს შეიძლება იყოს ნებისმიერი მნიშვნელობა 3 და 9 შორის). ეს კეთდება ისე, რომ "სტანდარტის შეყვანა" შეიძლება აღდგეს სცენარის ბოლოს "0" -ისთვის (იხ. "შენიშვნა" შენიშვნა მე -3 ხაზში შეყვანილი ფაილი ენიჭება ფაილის დესკრიპტორი "0", რომელიც გამოიყენება სტანდარტული შეყვანისთვის. "წაკითხული" განცხადების შემდეგ იკითხება თითოეული მხრიდან გათიშვის ხაზი და მიუთითებს "line1" ცვლადში.

ხანმოკლე გასასვლელად, თქვენ შეგიძლიათ გამოიყენოთ შესვენების განაცხადი:

count = 1 done = 0 ხოლო [$ count -le 9] echo "$ count" ძილის 1 ((count ++)) თუ [$ count == 5] მაშინ შესვენება გააკეთა echo დასრულდა

შესვენების განაცხადი skips პროგრამის შესრულების ბოლოს ხოლო loop და ახორციელებს ნებისმიერი განცხადებები მას შემდეგ. ამ შემთხვევაში, განცხადება "ექოს დასრულდა".

მეორეს მხრივ, გაგრძელდება განცხადება, ხოლო მეორე iteration- ის მარყუჟის მხოლოდ დანარჩენი პერიოდის გაშვება და პირდაპირ მომდევნო გაერთიანებაზე გადასვლა:

count = 1 done = 0 ხოლო [$ count -le 9] do sleep 1 ((count ++)) თუ [$ count == 5] შემდეგ გაგრძელდება fi echo "$ count" გაკეთდეს echo დასრულდა

ამ შემთხვევაში, "გაგრძელების" განაცხადი შესრულდება, როდესაც ცვლადი "რაოდენობა" აღწევს 5. ეს ნიშნავს იმას, რომ მომდევნო განცხადება (echo "$ count") არ არის შესრულებული ამ გაერთიანებაზე (როდესაც "რაოდენობა" არის 5).