Програмиране на BASH

Вложен цикъл в примери за скрипт за Bash

Вложен цикъл в примери за скрипт за Bash

При програмирането или скриптовете цикълът е една от най-основните и мощни концепции. Цикълът изпълнява определени задачи, докато не бъдат изпълнени посочените условия. Всеки език за програмиране или скриптове има различни начини за прилагане на концепцията.

В това ръководство разгледайте вложения цикъл в bash скриптове.

Вложен цикъл

Цикълът, по дефиниция, изпълнява определени задачи, докато не бъдат изпълнени условията. Ами ако задачата включва изпълнение на цикъл? Това е концепцията за вложен цикъл. Цикъл в цикъл.

Това е основната структура на цикъл.

докато (състояние)
# нещо

Тук цикълът while ще продължи да изпълнява задачите, декларирани вътре в блока, докато условието е изпълнено. В случай на вложен цикъл while, структурата ще изглежда така.

# основен цикъл
докато (състояние)
# вложен цикъл
докато (състояние)
# нещо

На теория вложените цикли могат да отидат до безкрайна дълбочина. В много ситуации вложените цикли могат да бъдат идеалното решение.

Цикъл в bash скрипт

Bash е мощен скриптов език. В bash има различни циклични структури. Най-популярните са за цикли, докато и докато. Ако сте запознати с програмирането на C / C ++ преди, тогава синтаксисът определено ще изглежда доста подобен.

За цикли

For loop е един от най-често срещаните и гъвкави изходи за форми и т.н. Структурата на цикли в bash скриптове. Структурата също много прилича на цикъл за C / C ++.

Структурата на цикъл for в bash е както следва.

за ((инициализиране; условие; увеличение)); направете
# нещо
Свършен

Структурата е много обяснима. Разделът за инициализация не е задължителен. Състоянието и увеличението обаче са с по-висок приоритет.

Нека го приведем в действие. Ето един много опростен bash скрипт, който изпълнява for loop.

за ((i = 0; i < 5 ; i++)); do
ехо "здравей свят"
Свършен

Също така е възможно да се използва списък / обхват като условие на цикъла. Това е особено полезно, ако работите със списък с файлове, диапазони от числа, масиви, командни изходи и т.н. Структурата изглежда нещо подобно.

за артикул в ; направете
# нещо
Свършен

Например, следният скрипт ще отпечата „здравей, свят“ пет пъти.

за i в 1… 5; направете
ехо "здравей свят"
Свършен

Ами ако трябва да работим със съдържанието на директория? В следващия пример скриптът ще отпечата всички файлове в директорията / usr / bin.

за i в / usr / bin / *; направете
ехо $ i
Свършен

Сега, какво правим, за да имаме вложен for цикъл? Това е само един за цикъл в друг. Ето вложен цикъл за използване на предишния пример.

за ((i = 0; i < 3 ; i++)); do
за ((j = 0; j < 2 ; j++)); do
ехо "здравей свят"
Свършен
Свършен

Резултатът ще бъде „здравей, свят“ 6 пъти. Външният цикъл ще се изпълни три пъти, като вътрешният цикъл ще се изпълни два пъти.

Докато цикли

Цикълът while е друг популярен и интуитивен цикъл, наличен в bash скриптове. Синтаксисът изглежда така.

докато ; направете
# нещо
Свършен

В следващия пример скриптът ще отпечата „здравей, свят“ пет пъти.

num = 1
докато [$ num -le 5]; направете
ехо "здравей свят"
num = $ (($ num + 1))
Свършен

Как би изглеждало да има вложен цикъл while? Ето един прост пример.

num_a = 1
num_b = 1
докато [$ num_a -le 5]; направете
докато [$ num_b -le 5]; направете
ехо "здравей свят"
num_b = $ (($ num_b + 1))
Свършен
num_a = $ (($ num_a + 1))
Свършен

До цикли

Ако имате фон за програмиране в C / C ++, тогава сте запознати с цикъла на работа. За съжаление, bash няма нищо подобно. Докато цикълът работи по подобен начин. Синтаксисът също изглежда доста еднакво.

до [ ]; направете
# нещо
Свършен

Разликата между цикъла while и while е условието на теста. Докато условието на теста е вярно, цикълът while ще продължи да работи. Цикълът while обаче ще продължи да работи само ако условието е невярно.

Ето бърз пример за цикъл while. Ще отпечата таблицата за умножение на 2.

num_a = 1
до [$ num_a -gt 10]; направете
ехо $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
Свършен

Прекъсване на цикъла

В определени ситуации, ако са изпълнени определени условия, стартирането на останалата част от цикъла става излишно. Прекъсванията на цикъла са интересна функция, която позволява излизане от цикъла при дадено състояние. По-важно е за вложени цикли, тъй като колкото по-високи са контурите, толкова повече консумация на ресурси и неефективност.

Тук следният цикъл for ще спре да се изпълнява веднага щом достигне състоянието.

за ((i = 1; i<=100;i++)); do
ехо $ i
ако [$ i -eq 10]; тогава
почивка
fi
Свършен

Проверете как да прекъснете цикъл while за задълбочено обяснение и демонстрация на прекъсвания на цикъл.

Финални мисли

Вложеният цикъл е проста и мощна концепция за разбиране и изпълнение. Надяваме се, че това ръководство е успяло да опише и демонстрира концепцията.

Интересуват се от още ръководства за скриптове? Вижте следните ръководства.

  • Баш безкраен цикъл
  • Въвеждане на потребител на скрипт за баш
  • Bash функция, връщаща масив

Щастливи компютри!

Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...
Как да покажете OSD наслагване в приложения на цял екран за Linux и игри
Играта на цял екран или използване на приложения в режим на цял екран без разсейване може да ви откъсне от съответната системна информация, видима в п...