Басх 'Унтил' петља: Упутство и примери

Коришћење петље „до“ у Басх скрипти за петљу преко команде(а).

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

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

Увод

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

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

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

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

док не урадите

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

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

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

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

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

У свакој итерацији проверавамо да ли је вредност к 10. Вредност се проверава помоћу тест команда. [[ Израз ]] је синтакса за тест команду (види ман тест).

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

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

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

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

Прве команде одјекују „Здраво“ и ехо „Ћао“ ће се извршити једном у потпуности; њихов успех или неуспех немају никакав утицај на то колико дуго ће петља трајати.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

./тест.сх

Закључак

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