Skip to main content

Linux Shell Script Примери за BASH 'for' Loop

Python Tutorial for Beginners [Full Course] 2019 (Април 2025)

Python Tutorial for Beginners [Full Course] 2019 (Април 2025)
Anonim

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

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

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

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

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

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

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

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

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

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

  1. Въведете mkdir скриптове (научете повече за mkdir тук).

  2. Въведете cd скриптове (това променя директорията до скриптове ).

  3. Въведете nano examplen.sh (където п е примерът, по който работите).

  4. Въведете скрипта.

  5. Натиснете CTRL + O да запазите и CTRL + X да излезете.

  6. тичам bash examplen.sh (отново, с п като пример, с който работите).

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

#! / bin / bashfor номер в 1 2 3 4 5оече $ numberdoneexit 0

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

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

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

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

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

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

  • 1
  • 2
  • 3
  • 4
  • 5

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

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

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

#! / bin / bashfor номер в {1..10} doecho "$ number" doneexit 0

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

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

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

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

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

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

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

#! / bin / bashfor номер в {0..100..10} doecho "$ number" doneexit 0

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

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

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

  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100

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

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

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

/ / bin / bashfor ((число = 1; число <100; число ++)) {if (($ номер% 5 == 0)) thenecho "$ номер се дели на 5"

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

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

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

Например:

  • 5 се дели на 5
  • 10 се дели на 5
  • 15 се дели на 5

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

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

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

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

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

#! / Хамбар / Башза файла в ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" направено

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

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