Програмування в 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
Крім того, за допомогою конструкції "документ тут" в сценарій можна вводити дані і переадресовувати їх в команду.