Басх 'Вхиле' петља: Туторијал и примери

Коришћење 'вхиле' петље у Басх скриптама за понављање команди.

Басх (Боурне Агаин Схелл) је командна линија љуске и језик скрипти у ГНУ/Линук оперативним системима. То је подразумевана љуска за већину Линук дистрибуција.

Као и већина скриптних језика, Басх обезбеђује синтаксу петље за понављање сличног задатка више пута. У овом чланку ћемо научити како да користимо док петља у Басху.

Увод

Тхе док петља у Басху се користи за извршавање команди (команди) (извршених команди) више пута на основу излаза друге команде (команди) (команде услова). Извршене команде ће наставити да раде све док се команда за услов не покрене успешно (тј. врати статус 0. Свака команда у Линук-у враћа 0 за успех и цео број који није нула за неуспех).

Ако постоји више наредби услова, израз узима у обзир само статус последње команде на листи, тј. петља се извршава све док се последња команда на листи не покрене успешно.

Општа синтакса

Општа синтакса за док петља у Басху је:

док урадите

Листа команди за извршавање ће наставити да ради све док се последња команда у листи команди услова не покрене успешно и изађе са статусом 0. У итерацији, када последња команда услова не успе, петља се напушта.

Корисник може навести било коју извршну датотеку на листи команди. То могу бити стандардни Линук програми или прилагођени кориснички програми или скрипте. Свака команда треба да буде или на новом реду или одвојена тачком и зарезом у истом реду.

Хајде да видимо неколико примера.

Петља док променљива не добије одређену вредност: Следећа петља се извршава до вредности променљиве Икс није једнако 10.

к=0 док [[ $к -не 10 ]] понавља $к ((к++)) готово

У свакој итерацији проверавамо да ли је вредност к 10. Вредност се проверава помоћу тест команда. [[ Израз ]] је синтакса за тест команду (види ман тест). Ево пошто користимо -не оператор (који означава 'није једнако'), тест команда враћа 0, односно успех, ако вредност к није 10, и враћа вредност која није нула, тј. неуспех ако је вредност к 10.

Затим унутар уради... урађено блок, исписујемо вредност к и повећавамо је. Када је вредност к 10, тест команда враћа статус који није нула и петља излази.

Белешка: Променљива индекса која се користи у вхиле петљи треба да се иницијализује или пре петље вхиле или у команди услова, за разлику од фор петље, која омогућава имплицитно иницијализацију променљиве.

Са више команди услова: Следећа петља креира 5 именованих директоријума дир0, дир1, ... дир4.

з=0 док ецхо "Листа датотека:" лс -л [[ $з -не 5 ]] до ецхо "Креирање дир$з..." мкдир дир$з ((з++)) готово

Прве команде ецхо "Листа датотека:" и лс -л извршиће се једном у потпуности; њихов успех или неуспех немају никакав утицај на то колико дуго ће петља трајати.

Тада ће се извршити тест команда за проверу вредности променљиве з. Све док вредност з није 5, команда теста враћа статус успеха и стога петља наставља да ради. Команде услова и извршене команде настављају да раде по реду. Овде, за сваку итерацију, прво ће покренути команду ецхо и команду лс у стању, а затим трећу наредбу услова проверава вредност з. Ако није 5, улази у петљу и извршава дате команде.

Прекини и настави

Изјава о прекиду за условни излаз

Можемо користити и условни исказ ако унутар петље. Тхе ако изјава се може користити са а пауза изјаву, за условни излаз из петље.

к=0 док [[ $к -не 10 ]] ради ако [[ $к -ек 5 ]] бреак фи ецхо $к ((к++)) готово

Горња петља вхиле ће штампати бројеве од 0 до 4. Онда када је вредност и 5, она ће избити из петље. Ово је од посебне користи када треба изаћи из петље када команда даје одређени излаз.

Цонтинуе Статемент да бисте условно прескочили итерацију

Басх такође има а Настави наредбу, да прескочите преостали део итерације у петљи ако је одређени услов задовољен.

к=0 док [[ $к -не 10 ]] уради ако [[ $к -ек 5 ]] настави фи ецхо $к ((к++)) готово

Горња петља ће штампати бројеве од 0 до 10, осим 5, јер током итерације к=5 постоји наредба цонтинуе, која ће прескочити остатак кода у петљи на почетку са итерацијом к=6.

Коришћење петљи: скрипте и командна линија

Синтаксе петље се могу користити у Басх љусци директно или из извршне датотеке скрипте љуске. Слично за и док петље, једном ан док синтакса петље је унета у љуску, љуска наставља са промптом да би кориснику дозволио да настави команде које треба да се петљају.

У супротном, корисник може ово да сачува у датотеци скрипте и изврши датотеку скрипте.

Тхе #!/бин/басх на почетку одређује интерпретер који ће се користити када се датотека изврши. Иако је Басх најчешће коришћена шкољка данас, неки корисници више воле шкољке попут зсх, који треба да буде наведен уместо басх на почетку ове датотеке.

Да бисте дали дозволе за извршење за ову датотеку, покрените:

цхмод +к тест.сх

коначно, да извршите датотеку, трцати:

./тест.сх

Закључак

Тхе док петља, слично за и све док петље су важна карактеристика у Басх скриптовању. Док петља има сличну употребу као петља до, осим што се користи за покретање алтернативних команди/програма када одређени програм успе. Ово често налази своју корисност у напредним мрежним скриптама, скриптама за одржавање система итд.