Підстановка команд
Підстановка команд - це підстановка результатів виконання команди [1] і навіть серії команд; буквально ця операція дозволяє викликати команду в іншому оточенні.
Класичний приклад підстановки команд - використання зворотних одиночних лапок (`.`). Команди всередині цих лапок є текстом командного рядка.
Виведення від команд може використовуватися: як аргумент іншої команди, для встановлення значення змінної і навіть для генерації списку аргументів циклу for.
| Команда, що підстановлюється, може вийти розбитою на окремі слова.
Навіть коли не відбувається розбиття на слова, операція підстановки команд може видаляти завершальні символи рядка.
| При виведенні значень змінних, отриманих в результаті підстановки команд, командою echo без лапок символи перекладу рядка будуть видалені. Це може виявитися неприємним сюрпризом.
Підстановка команд дозволяє навіть записувати в змінні вміст цілих файлів за допомогою перенаправлення або команди cat.
| Не використовуйте змінні для зберігання вмісту текстових файлів великого обсягу, без вагомих підстав. Не записуйте в змінні вміст бінарних файлів, навіть заради жарту.
Приклад 14-1. Дурна витівка
Зверніть увагу: у цій ситуації не виникає помилки переповнення буфера. Цей приклад показує перевагу захищеності інтерпретуючих мов, таких як Bash, від помилок програміста над компілюючими мовами програмування.
Підстановка команд дозволяє записати в змінну результати виконання циклу. Ключовим моментом тут є команда echo, у тілі циклу.
Приклад14-2. Запис результатів виконання циклу в змінну
Підстановка команд дозволяє суттєво розширити набір інструментальних засобів, які має в своєму розпорядженні Bash. Суть полягає в тому, щоб написати програму або сценарій, яка виводить результати своєї роботи на stdout (як це робить переважна більшість утиліт у UNIX) та записати висновок від програми до змінної.
| Альтернативою зворотним одиночним лапкам, які використовуються для підстановки команд, можна вважати таку форму запису: $(COMMAND).