Как да напиша BASH "за" Loop

Как да използвате BASH "за" цикъл в скриптове на черупки

BASH (което означава "Bourne Again Shell") е скриптов език, използван от повечето операционни системи, базирани на Linux и UNIX.

Можете да стартирате BASH команди в един терминален прозорец един след друг или можете да добавите командите към текстов файл, за да създадете скрипт на shell.

Голямото нещо за писането на скриптове на Shell е, че можете да ги стартирате отново и отново. Представете си например, че трябва да добавите потребител към система, да зададете разрешенията и да управлявате стартовата среда. Можете или да запишете командите на лист хартия и да ги изпълните, докато добавяте нови потребители, или можете да напишете един скрипт и просто да предавате параметри в този скрипт.

Скриптовите езици като BASH имат подобни програмни конструкции като другите езици. Например, можете да използвате параметри за импортиране, за да получите данни от клавиатурата и да ги запазите като променливи. След това можете да получите скрипта за извършване на определено действие въз основа на стойността на входните параметри .

Ключова част от всеки програмен и скриптов език е способността да се изпълнява същата част от кода отново и отново.

Има редица начини за повторение на кода (известен също като цикли). В това ръководство ще ви покажем как да напишете линия "за".

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

В това ръководство ще ви покажат пет начина за използване на for loop в BASH скрипт.

Преди да започнете

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

  1. Въведете скриптове mkdir ( научете повече за mkdir тук )
  2. Въведете cd скриптове (това променя директорията на скриптове )
  3. Въведете nano examplen.sh (където n е примерът, по който работите)
  4. Въведете скрипта
  5. Натиснете CTRL + O за запазване и CTRL + X за изход
  6. Стартирайте bash examplen.sh (отново, като n е примерът, с който работите)

Как да се върнете през списък

#! / Хамбар / Баш
за номер в 1 2 3 4 5
правя
echo $ number
Свършен
изход 0

Базата за използване на "за" цикли на BASH е малко по-различна от начина, по който повечето езици за програмиране и скриптове обработват "за" цикли. Нека счупим сценария надолу ...

В BASH "for" loop всички, изявленията между направя и done се изпълняват веднъж за всеки елемент в списъка.

В горния пример списъкът е всичко, което идва след думата в (т.е. 1 2 3 4 5).

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

Екното изявление се използва за показване на информация на екрана.

Следователно, този пример отнема номерата от 1 до 5 и ги извежда един по един на екрана:

Как да се придвижите между начална и крайна точка

Проблемът с горния пример е, че ако искате да обработите по-голям списък (да речем от 1 до 500), ще е необходимо да навършите възрасти, за да въведете всички номера на първо място.

Това ни води до втория пример, който показва как да определим начална и крайна точка:

#! / Хамбар / Баш
за номер в {1..10}
правя
echo "$ number"
Свършен
изход 0

Правилата са по същество еднакви. Стойностите след думата " в" съставят списъка, за да се повтори и всяка стойност в списъка се поставя в променливата (т.е. число) и всеки път, когато цикълът се повтаря, се изпълняват показанията между направянето и изпълнението.

Основната разлика е начинът, по който се формира списъкът. Свирените скоби {} основно обозначават диапазон, а диапазонът в този случай е от 1 до 10 (двете точки разделят началото и края на диапазон).

Следователно този пример минава през всеки номер между 1 и 10 и извежда номера на екрана, както следва:

Същият цикъл би могъл да бъде написан по този начин със синтаксис, идентичен на първия пример:

за номер в 1 2 3 4 5 6 7 8 9 10

Как да прескочите номера в обхват

Предишният пример показа как да пресечем между началната и крайната точка, така че сега ще разгледаме как да прескочите числата в диапазона.

Представете си, че искате да пресечете между 0 и 100, но показвате само всяко десети число. Следният скрипт показва как да направите точно това:

#! / Хамбар / Баш
за номер в {0..100..10}
правя
echo "$ number"
Свършен
изход 0

Правилата са по същество еднакви. Има списък, променлива и набор от изявления, които трябва да се изпълнят между направете и направете . Списъкът с този път изглежда така: {0..100..10}.

Първият номер е 0, а крайният номер е 100. Третият номер (10) е броят на елементите в списъка, които той ще пропусне.

Следователно горният пример показва следния изход:

По-традиционно търсят линия

Базисният начин на писане за цикли е малко странен в сравнение с други езици за програмиране.

Можете обаче да напишете за цикъл в подобен стил на програмния език C, както следва:

#! / Хамбар / Баш
за ((число = 1; число <100; число ++))
{
ако (($ номер% 5 == 0))
тогава
echo "$ число се дели на 5"
Fi
}
изход 0

Кръговете започват, като зададат променливия номер на 1 (номер = 1 ). Веригата ще запази итерацията, докато стойността на номерът е по-малка от 100 ( брой <100 ). Стойността на номерата се променя, като се добавя 1 към нея след всяка итерация ( число ++ ).

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

Битът между скобите проверява стойността на числото , разделя се на 5 и сравнява остатъка с 0. Ако остатъкът е 0, тогава числото се дели на 5 и след това се показва на екрана.

Например:

Ако искате да промените размера на стъпката на итерация, можете да промените номера ++, за да бъде число = число + 2 , число = число + 5 или число = число + 10 и т.н.

Това може да бъде допълнително намалено до число + = 2 или число + = 5 .

Практически пример

За бримките може да се направи повече от повторение на списъци с числа. Всъщност можете да използвате изхода на други команди като списък.

Следният пример показва как да конвертирате аудиофайлове от MP3 в WAV :

#! / Хамбар / Баш

Списъкът в този пример е всеки файл с разширение .MP3 в текущата папка и променливата е файл .

Командата mpg преобразува MP3 файла в WAV. Вероятно обаче трябва първо да го инсталирате, като използвате мениджъра си на пакети.