Програмування в bash

Як уже зазначалось, командні інтерпретатори володіють деякими властивостями мов програмування, які дозволяють створювати досить складні програми. Така програма об'єднує звичайно ряд команд UNIX, направлених на виконання конкретної задачі. Інструкції, з яких складається програма, вводяться в командний файл (скрипт, сценарій), який підлягає виконанню. Створити такий файл можна з допомогою звичайного текстового редактора.

6.1.8 Оператор "документ тут"

Оператор "документ тут" (<<) дозволяє використовувати рядки командного файлу в якості вхідних даних (вхідного потоку) для якої-небудь команди. Цим усувається необхідність читати вхідні дані з зовнішнього джерела, наприклад з файлу або каналу. Після оператора << на тому ж рядку слід помістити обмежувач потоку, а з наступного рядка - самі дані для вхідного потоку. Наприклад:

$ cat << zzz

> This line will be printed

>zzz

This line will be printed

$

6.1.9 Виконання наступної команди за умовою

Іноді в процесі роботи необхідно виконувати умовне розгалуження програми, або послідовності дій. В оболонці Сі подвійний амперсанд "&&" еквівалентний логічному "І". Команда, що стоїть після "&&", буде виконуватися тільки в тому випадку, якщо попередня команда завершилась успішно (код виходу 0). Наприклад:

% cp hello.c hello.bak && rm hello.c

Файл hello.c не буде видалено, якщо сталася помилка при копіюванні, тобто якщо команда cp завершилась невдало.

"||" - еквівалент логічного "АБО". Команда, що стоїть після "||", буде виконуватися тільки в тому випадку, якщо попередня команда завершилась невдало (код виходу відрізняється від 0). Наприклад:

% cp hello.c hello.bak || echo Copy file error

Якщо пройшла помилка при копіюванні, то буде надруковано повідомлення Copy file error.

6.1.10 Заміна оболонки новою програмою - команда exec

Команда exec замінює поточний процес (командний файл, що виконується, або оболонку) новою задачею, ім'я якої передається в якості параметра. Команда часто використовується при написанні

скриптів для організації процесів, що повторюються.

6.1.11 Визначення і розрахунок змінних

Командний інтерпретатор bash володіє можливостями роботи зі змінними. Імена змінних не обмежені по довжині і можуть містити великі і малі букви латинського алфавіту, цифри і знак підкреслювання. Ім'я змінної не може починатися с цифри.

Значення змінної присвоюється за допомогою оператора присвоювання (=). Оператор присвоювання пропусками не відділяється. Змінній може бути присвоєна яка завгодно сукупність символів. Наприклад:

$ greeting="How do you do?"

Значення змінних часто використовуються як аргументи команд. Розрахунок (підстановка) значення змінної відбувається за допомогою оператора $. Результатом розрахунку є набір символів. Цей набір замінює ім'я змінної в командному рядку. Наприклад:

$ echo $greeting

How do you do?

Список всіх визначених змінних можна отримати по команді set. Якщо яка-небудь змінна більше не потрібна, її можна видалити командою unset.

6.1.12 Ввід і вивід даних в сценаріях

Для виводу даних в сценарії можна використовувати команду echo, а для зчитування вхідної інформації в змінні - команду read. Фактично команда read читає рядок зі стандартного вводу. Все, що посилається на стандартний ввід з клавіатури (файлу або каналу при переадресації) - аж до символу нового рядка - зчитується і присвоюється в якості значення змінної. Наприклад:

$ read greeting

How do you do

$ echo $greeting

How do you do

Крім того, за допомогою конструкції "документ тут" в сценарій можна вводити дані і переадресовувати їх в команду.

Наши рекомендации