У Bash цикли працюють так само, як і у більшості мов програмування. Блок коду виконується доти, доки умова справджується.

Існує чотири типи циклів у Bash: `for`, `while`, `until` та `select`.

### Цикл `for`

Цикл `for` дуже подібний до свого аналогу у мові C:

```bash
for arg in elem1 elem2 ... elemN
do
  # statements
done
```

Під час кожної ітерації циклу, `arg` приймає значення від `elem1` до `elemN`. Значеннями можуть бути wildcard або [brace expansion](#brace-expansion).

Також, Ви можете записати цикл `for` одним рядком, але в такому випадку потрібно класти крапку з комою перед `do`, наприклад:

```bash
for i in {1..5}; do echo $i; done
```

Між іншим, якщо `for..in..do` виглядає для вас незвично, можна записати `for` у C-подібному стилі:

```bash
for (( i = 0; i < 10; i++ )); do
  echo $i
done
```

`for` зручно використовувати, коли Вам, наприклад, потрібно проветси деяку операцію над кожним файлом у директорії. До наприкладу, може виникнути потреба перенести усі `.bash` файли у директорію `script` і надати їм права на виконання:

```bash
#!/bin/bash

for FILE in $HOME/*.bash; do
  mv "$FILE" "${HOME}/scripts"
  chmod +x "${HOME}/scripts/${FILE}"
done
```

### Цикл `while`

Цикл `while` викунується доти, доки умова рівна _true_. Приклад роботи циклу `while`:

```bash
#!/bin/bash

# Квадрати чисел від 0 до 9
x=0
while [[ $x -lt 10 ]]; do # значення x менше за 10
  echo $(($x * $x))
  x=`expr $x + 1` # збільшити x
done
```

Так само, як і у випадку із циклом `for`, якщо Ви хочете записати `do` та умову в один рядок, Ви повинні покласти крапку з комою перед `do`.

### Цикл `until`

Цикл `until` протилежний до циклу `while`. Так як і `while` він перевіряє умову, але виконується доти, доки вона рівна _false_:

```bash
until [[ condition ]]; do
  #statements
done
```

### Котроль циклу

Бувають ситуації, коли ми повинні зупинити цикл до його нормального завершення або пропустити ітерацію. У цих випадках, Ви можете використати команду `break` та `continue` відповідно. Обидві команди працюють із усіма видами циклів.

Команда `break` використовується для виходу із циклу.

Команда `continue` використовується для того щоб пропустити поточну ітерацію:

```bash
for (( i = 0; i < 10; i++ )); do
  if [[ $(($i % 2)) == 0 ]]; then continue; fi
  echo $i
done
```

Приклад наведений вище виведе усі непарні числа від 0 до 9.

## ЗАВДАННЯ

Створіть файл із `loops.bash`.

Перші два позиційні аргументи будуть передані як границі. Вам потрібно вивести усі парні числа у проміжку між першим та другим позиційним аргументом.

Наприклад:

    ./loops.bash 10 17

Вивід:

    10
    12
    14
    16

Використовуйте `for`, `while` чи `until` цикли для вирішення завдання.

---
