BAS WHILE-Loops yazmaq üçün necə

Komutlar, sintaksis və nümunələr

Komanda fayllarını bir skript faylına yazmaq və sonra işə salmaqla birbaşa ardıcıllıqla yerinə yetirə bilərsiniz.

Komut dosyası sadəcə bir mətn faylıdır, adətən, skript satırından ( kabuk ) da icra edilə bilən bir sıra təlimatları ehtiva edən .SH fayl uzantısı ilə.

Loop nümunələri

Aşağıda isə bir müddət loopunun nümunəsidir. İcra edildikdə, bu skript faylı ekranda 1-dən 9-a qədər nömrələri çap edəcək. Bu müddətdə, for-loopa görə sonlandırma vəziyyətinin müəyyənləşdirilməsi üçün daha çox rahatlıq təmin edir.

[$ count -le 9] "$ count" yuxu 1 ((count ++)) yuxu edərkən #! / bin / bash count = 1

Məsələn, əvvəlki skriptə "((count ++))" artırma bəyanatını atmaqla sonsuz bir döngə edə bilərsiniz:

[$ count -le 9] echo "$ count" yuxu 1 edərkən #! / bin / bash count = 1

"Yuxu 1" ifadəsi hər bir təkrarlama üçün 1 saniyə icra dayandırır. Ctrl + C klaviatura qısayolunu prosesi ləğv etmək üçün istifadə edin.

Həm də şərt olaraq bir kolon qoyaraq sonsuz bir döngə yarada bilərsiniz:

#! / Bin / bash count = 1 isə: "$ count" yuxu 1 ((count ++)) yuxu edin

Döngü dövründə birdən çox şərt istifadə etmək üçün ikiqat kvadrat bracket qeydindən istifadə etmək lazımdır:

[$ count = 9] && [$ done == 0]] "count count" sleep 1 ((count ++)) [$ count == 5] isə [1] sonra $ done = 1 fi tamamlandı

Bu skriptdə "dəyişiklik" dəyişən 0-ə start verilir və sonra count 5-ə çatdıqda 1-ə bərabərdir. Loop vəziyyəti "count" nin dokuzdan az olduğu müddətdə davam edəcəyini və "işlər" bərabər olduğunu bildirir sıfır. Buna görə sayı 5 sayına bərabərdir.

"&&" məntiqi deməkdir "və" və "||" məntiqli "və ya" deməkdir.

"" Və "və ya" şərtlərində birləşmələr üçün alternativ bir nişan tək kvadrat mötərizə ilə "a" və "-o" dir. Yuxarıda göstərilən şərt:

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

... kimi yenidən yazıla bilər:

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

Bir mətn faylı oxu, adətən bir müddət loop ilə edilir. Aşağıdakı misalda, bas scripti "inventory.txt:" adlı bir faylın xətti ilə məzmun xəttini oxuyur

FILE = inventory.txt exec 6

İlk satır giriş faylının adını "FILE" dəyişəninə verir. İkinci xətt "6" fayl identifikatorunda "standart girişi" saxlayır (3 və 9 arasında hər hansı bir dəyər ola bilər). Bu, "standart giriş" skriptin sonunda "0" faylının təsviri üçün bərpa edilə bilər ("exec 0" ifadəsinə baxın. 3-cü satırda giriş faylı istifadə olunan fayl təsvirinə "0" verilir) standart giriş üçün "oxumaq" ifadəsi hər bir iteration üzərində fayldan bir satır oxuyur və "line1" dəyişəninə verir.

Bir vaxt-loopdan vaxtından əvvəl çıxmaq üçün bu kimi bəhs edilən ifadəni istifadə edə bilərsiniz:

[$ count = 9] echo "$ count" sleep 1 ((count ++)) if ($ count == 5) sonra break fi done echo Finish

Bəyanat bəyanatı loop edərkən proqramın icrasını sona çatdırır və onu izləyən hər hansı bir ifadəni yerinə yetirir. Bu vəziyyətdə "yankı tamamlandı" deyildi.

Davam bəyanatı, digər tərəfdən, cari toqquşmanın loop ifadəsini yalnız qalan hissəsini atır və birbaşa növbəti iteraya atır:

[$ count -le 9] 1-i (count ++), əgər [$ count == 5] davam edərsə, count = 1 = 0 = "$ count" echo tamamlandı

Bu halda "davam" ifadəsi dəyişən "count" 5-ə çatdıqda yerinə yetirilir. Bu demək olar ki, bu yineleyə ("say" 5-nin dəyəri olduğu halda) növbəti bəyanat (yankı "$ count") yerinə yetirilmir.