WHILE-Loops басын қалай жазу керек

Командалар, синтаксис және мысалдар

Сіз оларды сценарий файлына жазып, оны іске қосып, командалардың қатарын орындай аласыз.

Сценарий файлы тек қана мәтіндік файл болып табылады, әдетте командалық жолдан ( қабық ) орындалатын нұсқаулардың дәйектілігі бар SH файл кеңейтімімен.

Луп үлгілері

Төменде уақытша циклдың мысалы келтірілген. Орындаған кезде бұл сценарий файлы экрандағы 1-ден 9-ға дейінгі нөмірлерді басып шығарады. While-statement Сізге for-loop-ке қарағанда аяқтау шартын көрсету үшін икемділік береді.

[$ count -le 9] «$ count» ұйқысын 1 ((count ++)) ұйқы жасаған кезде #! / bin / bash count = 1

Мысалы, сіз бұрынғы сценарийді «((count ++))» деген өрнекті шығарып, шексіз циклды жасай аласыз:

# [/ count / bash count = 1] [$ count -le 9] '$ count' ұйқы 1 жасалды

«Ұйқы 1» мәлімдемесі әрбір иерархияда 1 секундқа орындалуды тоқтатады. Процесті тоқтату үшін Ctrl + C пернелер тіркесімін пайдаланыңыз.

Сондай-ақ, шексіз циклды қос нүктені шарты ретінде қою арқылы жасай аласыз:

#! / bin / bash count = 1 болса: «$ count» ұйқысын 1 ((count ++)) орындаңыз

Уақытша-циклде бірнеше шартты пайдалану үшін екі жақты кронштейннің белгілерін пайдалану керек:

[$ count = 9] && [$ done == 0]] «$ count» ұйқысын 1 ((count ++)) егер [$ count == 5] болса, count = 1 = done = 0; онда $ done = 1 fi жасады

Бұл сценарийде «орындалды» айнымалысы 0 мәніне инициализленеді, содан кейін санау 5 жеткенде 1 мәніне орнатылады. Циклдік жағдайы «count» тоғызынан аз болғанша, while циклінің жалғасатындығын көрсетеді және «done» тең нөлге дейін. Сондықтан, сандар 5 тең болған кезде ілмектер шығып кетеді.

«&&» логикалық «және» және «||» логикалық «немесе» дегенді білдіреді.

«Және» және «немесе» шарттарындағы конъюнктура үшін альтернативті белгілер бір-бір жақты тік жақшалармен «-a» және «-o» болып табылады. Жоғарыда көрсетілген шарт:

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

... қайта жазылуы мүмкін:

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

Мәтіндік файлды оқу, әдетте, уақытша циклмен орындалады. Келесі мысалда bash сценарийі «inventory.txt:» деп аталған файлдың жолымен мазмұн жолын оқиды.

FILE = inventory.txt exec 6

Бірінші жол кіріс файл атауын «FILE» айнымалысына тағайындайды. Екінші жол «6» файлдық дескрипторында «стандартты енгізуді» сақтайды (3 және 9 аралығындағы кез келген мән болуы мүмкін). Бұл «стандартты енгізу» сценарийдің соңында «0» дескрипторына қалпына келтірілуі үшін жасалады («exec 0» 3-жолда кіріс файлы «0» дескрипторына тағайындалады) Стандартты енгізу үшін «read» сөзі кейін әрбір иерархиядағы файлдан жолды оқиды және оны «line1» айнымалысына тағайындайды.

Уақытша-циклды мерзімінен бұрын шығару үшін, үзіліс үзіндісін мына сияқты пайдалана аласыз:

[$ count = 9] «$ count» ұйқы 1 ((count ++)) егер [$ count == 5] болса, count = 1 done = 0, then break break done echo Finished

Үзіліс туралы мәлімдеме бағдарламаны орындауды соңына дейін өткізіп жібереді және циклды орындағаннан кейін кез келген мәлімдемелерді орындайды. Бұл жағдайда «echo finished» сөзі.

Жалғастыру туралы мәлімдеме, екінші жағынан, ағымдағы итерацияның қалған уақытша циклінің мәлімдемесін өткізіп жібереді және тікелей келесі итерацияға өтеді:

[$ count == 5] болса, [$ count -le 9] ұйқы 1 (= count = 9) ұйқы 1 = count = 1 орындалды = 0 болса, онда «$ count» echo аяқталды

Бұл жағдайда «жалғастыру» сөзі айнымалы «count» 5-ке жеткенде орындалады. Бұл кейінгі мәлімдемені («count count» мәні 5 болғанда) «» $ echo «дегенді білдіреді.