Цикл for

Цикл в Bash очень важ­ная цик­ли­че­ская кон­струк­ция в про­грам­ми­ро­ва­нии обо­лоч­ки Bash. В основ­ном цикл в Bash исполь­зу­ет­ся для ите­ра­ции по ряду слов внут­ри строк. Это пост опи­сы­ва­ет цикл в Bash со все­ми необ­хо­ди­мы­ми примерами.

Базо­вый син­так­сис цик­ла в Bash:

 

При­мер цик­ла в Bash:

1:   Про­стой цикл:

В при­ве­ден­ном ниже при­ме­ре цик­ла в Bash мы ини­ци­и­ро­ва­ли пере­мен­ную i. Эта пере­мен­ная i в цик­ле из серии 1 до 5 с помо­щью при­ра­ще­ния зна­че­ния 1. То же зна­че­ние пере­мен­ной я обра­ба­ты­ваю в коман­де, кото­рая выво­дит с помо­щью  echo зна­че­ние пере­мен­ной i.

 

2.   Допол­ни­тель­ный цикл в Bash для вер­сии 4.0:

В при­ве­ден­ном выше при­ме­ре 1, мы ини­ци­и­ро­ва­ли цикл путем опре­де­ле­ния и запи­си всех зна­че­ний пере­мен­ной i. Но что, если ваш цикл име­ет несколь­ко зна­че­ний, и вы хоти­те пере­брать то же самое. Bash вер­сии 4.o и выше под­дер­жи­ва­ет функ­ци­о­наль­ность, в кото­рой вы може­те опре­де­лить началь­ные и конеч­ные зна­че­ния серии вме­сте со зна­че­ни­ем при­ра­ще­ния. Поз­во­ля­ет пере­брать от 1 до 12 с при­ра­ще­ни­ем зна­че­ние 3, и вы може­те опре­де­лить его с помо­щью при­ме­ра цик­ла Bash ниже.

 

3. Чте­ние директории:

Кро­ме того, мож­но ини­ци­а­ли­зи­ро­вать пере­мен­ный цикл со спис­ком фай­лов в ката­ло­ге с помо­щью при­ме­ра ниже.

 

Обра­зец выво­да цик­ла в Bash, пока­за­но ниже:

 

4. Син­так­сис про­грам­ми­ро­ва­ния на C:

Вы може­те так­же исполь­зо­вать цикл в Bash с исполь­зо­ва­ни­ем язы­ка про­грам­ми­ро­ва­ния C, как заяв­ле­ние, как пока­за­но ниже:

 

5. Содер­жа­ние обра­бот­ки файла.

Вы може­те так­же исполь­зо­вать цикл в Bash при обра­бот­ке содер­жи­мо­го фай­ла в дру­гой коман­де. Это очень помо­га­ет при обра­бот­ке огром­но­го коли­че­ства дан­ных. Если у вас есть файл со спис­ком поль­зо­ва­те­лей и вы хоти­те про­ве­рить, явля­ют­ся ли они забло­ки­ро­ван­ны­ми или нет. То исполь­зуй­те при­мер ниже.

При­мер фай­ла со спис­ком пользователей.

 

В при­ве­ден­ном ниже при­ме­ре пере­мен­ная «i»  ини­ци­а­ли­зи­ру­ет­ся с помо­щью коман­ды cat и пере­да­ет­ся коман­де «passwd -s», име­ю­щий аргу­мент как $i, кото­рый не что иное, как имя поль­зо­ва­те­ля, что­бы про­ве­рить, забло­ки­ро­ван он или нет.

 

6. Копи­ро­ва­ние фай­лов на несколь­ко хостов

Вы може­те так­же исполь­зо­вать цикл в Bash, где вы може­те ско­пи­ро­вать фай­лы на несколь­ко хостов, и вы не хоти­те вво­дить ту же самую коман­ду одну за дру­гой. В при­ве­ден­ном ниже при­ме­ре вы ско­пи­ру­е­те файл test.txt на хосты: «ANDREYEX01 andreyex02 manns1 andreyex06», так­же вы може­те с помо­щью цик­ла в Bash поз­во­лить ско­пи­ро­вать файл на одном дыхании.

 

7. LVM зеркалирование:

Вы може­те исполь­зо­вать цикл в Bash в зер­каль­ном отоб­ра­же­нии логи­че­ско­го рас­ши­ре­ния LV. Пред­по­ло­жим, вы име­е­те груп­пу томов vg00 с 10 LV, и вы хоти­те отра­зить его с помо­щью PV sde1. Затем вы може­те исполь­зо­вать цикл для ее выпол­не­ния в про­стом ком­пакт­ном реше­нии на одном дыхании.

 

8. Таб­ли­ца умножения:

Допу­стим, вы хоти­те напи­сать про­грам­му с помо­щью обо­лоч­ки Bash для таб­ли­цы умно­же­ния В при­ве­ден­ном ниже при­ме­ре цик­ла, мы ини­ци­а­ли­зи­ру­ем пере­мен­ную i, кото­рая будет исполь­зо­вать­ся для умно­же­ния циф­ры с помо­щью коман­ды expr.

 

При­мер вывода: