Како написати Басх ВХИЛЕ-Лоопс

Команде, синтаксу и примере

Можете извршити низ команди тако што ћете их написати у датотеку скрипте и затим га покренути.

Скриптна датотека је једноставно текстуална датотека, обично са екстензијом .СХ датотеке која садржи низ инструкција које се такође могу извршити из командне линије ( схелл ).

Током Лооп примера

Испод је пример петље. Када се изврши, ова скрипта ће одштампати бројеве од 1 до 9 на екрану. Изјава "док" даје вам више флексибилности за одређивање стања прекида него за петљу .

#! / бин / басх цоунт = 1 док [$ цоунт -ле 9] ецхо "$ цоунт" слееп 1 ((цоунт ++)) учињено

На пример, претходну скрипту можете направити бесконачном петљу тако што ћете изоставити изјаву о инкретирању "((број ++))":

#! / бин / басх цоунт = 1 док [$ цоунт -ле 9] ецхо "$ цоунт" слееп 1 доне

Изјава "слееп 1" паузира извршење за 1 секунду на свакој итерацији. Користите пречицу на тастатури Цтрл + Ц да бисте прекинули процес.

Такође можете креирати бесконачну петљу стављањем дебљине као услов:

#! / бин / басх цоунт = 1 док: ецхо "$ цоунт" слееп 1 ((цоунт ++)) учињено

Да бисте користили више услова током циклуса, морате користити нотацију двоструког квадрата:

цоунт = 1 доне = 0 док [[$ цоунт -ле 9] && [$ доне == 0]] ецхо "$ цоунт" слееп 1 ((број ++)) ако [$ цоунт == 5]; онда је $ доне = 1 завршено

У овој скрипти, променљива "доне" се иницијализује на 0, а затим се постави на 1 када број достигне 5. Стање петље наводи да ће циклус док ће се наставити све док је "бројање" мањи од девет и "извршено" је једнако на нулу. Због тога петље излази када је број једнак 5.

"&&" означава логичке "и" и "||" значи логичан "или".

Алтернативна нотација за коњункцију "и" и "или" у условима је "-а" и "-о" са једним квадратним заградама. Горе наведено стање:

[[$ цоунт -ле 9] && [$ доне == 0]]

... може се преписати као:

[$ цоунт -ле 9] -а [$ учињено == 0]

Читање текстуалне датотеке обично се врши уз помоћ петље. У следећем примеру басх скрипта чита садржајну линију линијом датотеке под именом "инвентори.ткт:"

ФИЛЕ = инвентори.ткт екец 6

Прва линија додељује име улазног фајла у варијаблу "ФИЛЕ". Друга линија чува "стандардни улаз" у опису датотеке "6" (то може бити било која вриједност између 3 и 9). Ово је учињено тако да се "стандардни унос" може вратити на дескриптор датотеке "0" на крају скрипте (погледајте изјаву "екец 0 У трећој линији улазна датотека се додјељује десцриптору датотеке" 0 ", који се користи за стандардни унос. Прочитај "прочитај" тада чита линију из фајла на свакој итерацији и додељује је променама "лине1".

Да бисте прерано изашли из неког времена, можете користити овакав прекид:

цоунт = 1 доне = 0 док [$ цоунт -ле 9] ецхо "$ цоунт" слееп 1 ((цоунт ++)) ако [$ цоунт == 5] онда разбије фи доне ецхо Финисхед

Изјава о прекиду прескочи извршење програма до краја док се петља и извршава било какве наредбе које следе. У овом случају, изјава "ецхо Финисхед."

Изјава о наставку, с друге стране, прескочи само остатак наредбе петље тренутне итерације и скок директно на следећу итерацију:

цоунт = 1 доне = 0 док [$ цоунт -ле 9] спавај 1 ((број ++)) ако [$ цоунт == 5] настави ф ецхо "$ цоунт" доне ецхо Финисхед

У овом случају, наставак "настави" се извршава када варијабла "број" достигне 5. То значи да наредна изјава (ецхо "$ цоунт") се не извршава на овој итерацији (када је вредност "број" 5).