logo

Сценарії Bash – цикл For

Оскільки BASH є мовою командного рядка, ми отримуємо досить багатофункціональний досвід, щоб використовувати навички програмування для виконання завдань у терміналі. Ми можемо використовувати цикли та умовні оператори в сценаріях BASH для виконання деяких повторюваних і складних задач простим програмним способом. У цій статті ми зосередимося на для циклу у сценаріях BASH.

Залежно від варіанту використання та проблеми, яку він намагається автоматизувати, існує кілька способів використання циклів.



  • Простий цикл For
  • Цикл for на основі діапазону
  • Ітерація масиву для циклів
  • С-подібні петлі
  • Нескінченний цикл for

Простий цикл For

Щоб виконати цикл for, ми можемо написати такий синтаксис:

#!/bin/bash  for n in a b c; do  echo $n done>
  • У першій ітераціїn>приймає значення a, і сценарій друкує a.
  • У другій ітераціїn>приймає значення b, і сценарій друкує b.
  • У третій ітераціїn>приймає значення c, а сценарій друкує c.

501

0,0625 як частка

Наведена вище команда перебиратиме вказані елементи після в ключове слово по одному. Елементами можуть бути числа, рядки або інші форми даних.



Цикл for на основі діапазону

Ми можемо використовувати цикли for на основі діапазону. У цьому типі циклу ми можемо вказати число для початку, зупинки та збільшення на кожній ітерації (необов’язково) у операторі. Ви можете зробити це двома способами, наприклад, згадавши значення інкремента/зменшення та збільшивши на одиницю за замовчуванням. Синтаксис виглядає так:

#!/bin/bash  for n in {1..5};  do  echo $n done>

500

У наведеному вище коді ми використовуємо {} для визначення діапазону чисел. Усередині фігурних дужок ми вказуємо початкову точку, за якою йдуть дві крапки та кінцева точка. За замовчуванням він збільшується на одиницю. Отже, друкуємо 5 чисел від 1 до 5 включно.



#!/bin/bash  for n in {1..5..2};  do  echo $n done>

502

Тут ми бачимо, що цикл збільшився на 2 одиниці, як зазначено у фігурних дужках. Таким чином, це робить роботу з числами дуже легкою та зручною. Це також можна використовувати з літерами.

ПРИМІТКА: Ми не можемо використовувати змінні у фігурних дужках, тому нам доведеться жорстко закодувати значення. Щоб використовувати змінні, ми бачимо традиційні цикли for у стилі C у наступних кількох розділах.

Ітерація масиву для циклів

Ми можемо зручно перебирати масиви в bash, використовуючи цикли for із певним синтаксисом. Ми можемо використовувати спеціальні змінні в BASH, наприклад @, щоб отримати доступ до всіх елементів у масиві. Давайте подивимося на код:

#!/bin/bash  s=('football' 'cricket' 'hockey')  for n in ${s[@]};  do  echo $n done>

503

Ми можемо перебирати елементи масиву за допомогою оператора @, який отримує всі елементи в масиві. Таким чином, використовуючи цикл for, ми перебираємо їх один за іншим. Ми використовуємо змінну ${variable_name[@]}, у якій фігурні дужки розширюють значення змінної s, яка є масивом рядків. Використовуючи оператор [@], ми отримуємо доступ до всіх елементів і таким чином перебираємо їх у циклі for. Ось, п є ітератором, тому ми можемо надрукувати значення або виконати необхідну обробку.

процес android acore

С-подібні петлі

Як було сказано раніше, нам потрібно використовувати змінні всередині циклів for для повторення діапазону елементів. Таким чином, цикли for у стилі C відіграють дуже важливу роль. Давайте подивимося, як ми їх використовуємо.

#!/bin/bash  n=7 for (( i=1 ; i<=$n ; i++ ));  do  echo $i done>

504

Як ми бачимо, ми можемо динамічно використовувати значення діапазону кінцевих умов. Пам’ятайте, що пробіли між подвійними дужками можуть бути навмисними та є частиною синтаксису. Цикли for у стилі C – це цикли, які мають 3 частини: ітератор ініціалізації, інкремент/декремент і кінцеву умову.

У наведеному вище синтаксисі ми ініціалізували ітератор/лічильник циклу рівним 1, який може бути будь-яким на вибір. Друга частина — кінцева умова, тут ми використали змінну п який ініціалізується перед циклом for, тому ми використовуємо простий $ оператор для отримання значення змінної. Нарешті, у нас є інкремент/декремент, який змінює ітератор/лічильник на значення, яке може бути будь-яким, але в прикладі ми використали унарний оператор (++) щоб збільшити значення на одиницю, що еквівалентно i=i+1 . Таким чином, ми можемо використовувати такі твердження, як i+=2, i–,++i, і так далі і так далі.

Нескінченний цикл for

Ми не часто використовуємо це, але іноді це корисно, щоб певні речі працювали. Синтаксис досить простий і схожий на цикли for у стилі C.

#!/bin/bash  n=4 for (( ; ; ));  do  if [ $n -eq 9 ];then  break  fi  echo $n  ((n=n+1)) done>

Цикл починається зn>встановлено на 4. Він збільшуєтьсяn>на 1 на кожній ітерації та друкує значенняn>покиn>стає рівним 9. Колиn>досягає 9, стbreak>оператор виконується, і цикл завершується. Сценарій зупиняється після друку чисел від 4 до 8.

програмування stdin c

505

Як ми бачимо, цикл `for` не має умов, і цей цикл виконується вічно, але у нас є оператор умови, щоб перевірити, що він не продовжується вічно. Ми використовуємо оператор break в операторі if, щоб вийти з циклу та припинити ітерацію за допомогою ітератора. Ми використовували інкрементор для збільшення змінної в циклі, інакше цикл буде нескінченним. Звичайно, нам потрібна певна логіка, щоб вийти з циклу, і тому нам потрібно використовувати умовний оператор if.