Підстановка команд

Підстановка команд - це підстановка результатів виконання команди [1] і навіть серії команд; буквально ця операція дозволяє викликати команду в іншому оточенні.

Класичний приклад підстановки команд - використання зворотних одиночних лапок (`.`). Команди всередині цих лапок є текстом командного рядка.

Виведення від команд може використовуватися: як аргумент іншої команди, для встановлення значення змінної і навіть для генерації списку аргументів циклу for.

Команда, що підстановлюється, може вийти розбитою на окремі слова.

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

При виведенні значень змінних, отриманих в результаті підстановки команд, командою echo без лапок символи перекладу рядка будуть видалені. Це може виявитися неприємним сюрпризом.

Підстановка команд дозволяє навіть записувати в змінні вміст цілих файлів за допомогою перенаправлення або команди cat.

Не використовуйте змінні для зберігання вмісту текстових файлів великого обсягу, без вагомих підстав. Не записуйте в змінні вміст бінарних файлів, навіть заради жарту.

Приклад 14-1. Дурна витівка

Зверніть увагу: у цій ситуації не виникає помилки переповнення буфера. Цей приклад показує перевагу захищеності інтерпретуючих мов, таких як Bash, від помилок програміста над компілюючими мовами програмування.

Підстановка команд дозволяє записати в змінну результати виконання циклу. Ключовим моментом тут є команда echo, у тілі циклу.

Приклад14-2. Запис результатів виконання циклу в змінну

Підстановка команд дозволяє суттєво розширити набір інструментальних засобів, які має в своєму розпорядженні Bash. Суть полягає в тому, щоб написати програму або сценарій, яка виводить результати своєї роботи на stdout (як це робить переважна більшість утиліт у UNIX) та записати висновок від програми до змінної.

Альтернативою зворотним одиночним лапкам, які використовуються для підстановки команд, можна вважати таку форму запису: $(COMMAND).