Як напісаць Баш «для» Loop

Як выкарыстоўваць BASH «для» цыклу ў скрыптах

BASH (што азначае Bourne Again Shell) гэта мова сцэнарыяў выкарыстоўваецца ў большасці Linux і аперацыйных сістэм UNIX-прыкладанняў.

Вы можаце запускаць каманды BASH ў акне тэрмінала, адзін за адным, ці вы можаце дадаць каманды ў тэкставы файл для стварэння сцэнарыя абалонкі.

Вялікая рэч аб напісанні скрыптоў з'яўляецца тое, што вы можаце запусціць іх зноў і зноў. Напрыклад ўявіце, што вам трэба дадаць карыстальніка ў сістэму, ўсталёўваць свае правы і кіраваць іх адпраўную асяроддзя. Вы можаце альбо запісаць каманды на аркушы паперы і запусціць іх па меры дадання новых карыстальнікаў або вы можаце напісаць адзін сцэнар і проста перадаць параметры ў гэты сцэнар.

Мовы сцэнарыяў, такія як BASH маюць падобныя канструкцыі праграмавання, як і іншыя мовы. Напрыклад, вы можаце выкарыстоўваць параметры імпарту , каб атрымаць ўвод з клавіятуры і захаваць іх у якасці зменных. Пасля гэтага вы можаце атрымаць скрыпт для выканання пэўных дзеянняў на аснове значэння ўваходных параметраў .

Ключавой часткай любога праграмавання і мова сцэнарыяў з'яўляецца магчымасць запускаць адзін і той жа кавалак кода зноў і зноў.

Ёсць некалькі спосабаў, каб паўтарыць код (таксама вядомы як пятля). У гэтым кіраўніцтве, вам будзе паказана, як напісаць «для» цыклу.

Для цыклу паўтарае пэўную частку кода зноў і зноў. Яны карысныя, так што паслядоўнасць каманд не можа працягваць працаваць да таго часу канкрэтнае ўмова выконваецца, пасля чаго яны будуць спыняцца.

У гэтым кіраўніцтве, вам будзе паказана пяць спосабаў выкарыстання для цыклу ў BASH сцэнар.

Перад пачаткам устаноўкі

Перад тым, як прыступіць да працы з прыкладамі для цыклу, вам неабходна адкрыць акно тэрмінала і выканайце наступныя дзеянні:

  1. Увядзіце MKDIR скрыпты ( даведацца больш пра MKDIR тут )
  2. Увядзіце кд скрыпты (гэта змяняе каталог для скрыптоў)
  3. Увядзіце нана examplen.sh (дзе п прыклад вы працуеце)
  4. увядзіце сцэнар
  5. Націсніце CTRL + O , каб захаваць і CTRL + X , каб выйсці
  6. Запуск Баш examplen.sh (ізноў жа , з п з'яўляецца прыкладам вы працуеце с)

Як цыкл па спісе

#! / Bin / Баш
для ліку у 1 2 3 4 5
рабіць
Рэха $ нумар
зроблена
выхад 0

BASH спосаб выкарыстання «для» завес некалькі адрозніваецца ад шляху большасці іншых моў праграмавання і сцэнарыяў апрацоўкі «для» завесы. Давайце разгледзім сцэнар ўніз ...

У BASH «для» цыклу ўсе, што аператары паміж спраў і зрабіць выконваюцца адзін раз для кожнага элемента ў спісе.

У прыведзеным вышэй прыкладзе, спіс усё , што прыходзіць пасля таго, як слова ў (г.зн. 1 2 3 4 5).

Кожны раз , калі цыкл паўтараецца, наступнае значэнне ў спісе ўстаўляецца ў пераменны , названых пасля слова «для». У прыведзеным вышэй цыкле, пераменная называецца лік.

Рэха аператар выкарыстоўваецца для адлюстравання інфармацыі на экране.

Такім чынам, гэты прыклад прымае лічбы ад 1 да 5, і выводзіць іх па адным на экран:

Як Петля Між пачатковай і канчатковай кропкай

Праблема прыведзенага вышэй прыкладу, што калі вы хочаце апрацоўваць большы спіс (скажам, 1 да 500), то спатрэбіцца узростаў набіраць ўсе нумары ў першую чаргу.

Гэта падводзіць нас да другога прыкладу, які паказвае, як пазначыць пачатковую і канчатковую кропку:

#! / Bin / Баш
для ліку ў {1..10}
рабіць
рэха «$ лік»
зроблена
выхад 0

Правілы ў асноўным аднолькавыя. Значэння пасля слова "в" складаюць спіс перабраць і кожнае значэнне ў спісе змяшчаецца ў зменную (г.зн. колькасці), і кожны раз ітэрацыю цыклу, аператары паміж спраў і зрабіць выконваюцца.

Асноўнае адрозненне з'яўляецца спосабам фармуецца спіс. Фігурныя дужкі {} у асноўным пазначае дыяпазон, і дыяпазон, у дадзеным выпадку, складае ад 1 да 10 (дзве кропкі падзелу пачатку і канца дыяпазону).

У гэтым прыкладзе, такім чынам, праходзіць праз кожны лік у дыяпазоне ад 1 да 10 і выводзіць лік на экран наступным чынам:

Жа цыкл мог быць напісаны так, з сінтаксісам , ідэнтычным першаму прыкладу:

для ліку ў 1 2 3 4 5 6 7 8 9 10

Як Прапусціць лікі ў дыяпазоне

У папярэднім прыкладзе паказана, як цыкл паміж пачатковай і канчатковай кропкай, так што зараз мы будзем глядзець на тое, як прапусціць лікі ў дыяпазоне.

Уявіце, што вы хочаце, каб завесы ад 0 да 100, але толькі паказваеце кожны дзесяты нумар. Наступны сцэнар паказвае, як зрабіць гэта:

#! / Bin / Баш
для ліку ў {} 0..100..10
рабіць
рэха «$ лік»
зроблена
выхад 0

Правілы ў асноўным аднолькавыя. Існуе спіс, пераменны і набор аператараў , якія будуць выконвацца паміж справамі і зрабіць. У спісе на гэты раз выглядае наступным чынам: {0..100..10}.

Першае чысло роўна 0, а канец лік роўна 100. трэцяе лік (10) з'яўляецца колькасць элементаў у спісе, што ён прапусціць.

У прыведзеным вышэй прыкладзе, такім чынам, паказвае наступную выснову:

Больш традыцыйны Looking Для Loop

BASH спосаб напісання для завес крыху дзіўна, калі па параўнанні з іншымі мовамі праграмавання.

Вы можаце, аднак, напісаць цыкл у падобным стылі на мове праграмавання C, як гэта:

#! / Bin / Баш
для ((лік = 1; лік <100; лік ++))
{
калі (($ лік% 5 == 0))
то
рэха «$ лік дзеліцца на 5»
фі
}
выхад 0

Цыкл пачынаецца, усталёўваючы пераменны лік 1 (лікі = 1). Цыкл будзе трымаць ітэрацыю ў той час як значэнне колькасці менш 100 (лік <100). Значэнне колькасці змяняецца шляхам дадання 1 да яго пасля кожнай ітэрацыі (нумар ++).

Усё, што паміж фігурнымі дужкамі ажыццяўляюцца праз кожную ітэрацыю цыклу.

Біт паміж дужкамі правярае значэнне колькасці, дзеліць яго на 5, і параўноўвае рэшту на 0. Калі рэшту роўны 0 , то лік дзеліцца на 5 і затым адлюстроўваецца на экране.

Напрыклад:

Калі вы хочаце змяніць памер кроку ітэрацыі вы можаце змяніць нумар ++ падзел будзе лік = лік + 2, лік = лік + 5, або нумар = нумар + 10 і г.д.

Гэта можа быць дадаткова зменшана да колькасці + = 2 ці нумар + = 5.

практычны прыклад

Для завес можа зрабіць больш, чым ітэрацыя спісы нумароў. Вы можаце выкарыстоўваць выснову іншых каманд у спісе.

У наступным прыкладзе паказана , як канвертаваць аўдыё - файлы з MP3 ў WAV :

#! / Bin / Баш

Спіс у гэтым прыкладзе кожны файл з пашырэннем .MP3 ў бягучай тэчцы і пераменны з'яўляецца файлам.

Каманда міль на галон пераўтворыць файл MP3 ў WAV. Тым не менш, вы, верагодна, неабходна ўсталяваць гэта з дапамогай дыспетчара пакетаў першай.