5.7.4 ПОДСТАНОВКА КОМАНД
Подстановка команд является очень мощным инструментов bash. Она заключается в замене имени команды на результат ее выполнения. Существует две формы подстановки команд:
$(command) и `command`
Если применяется вторая из этих форм, то обратный слэш внутри кавычек трактуется как литерал, кроме тех случаев, когда за ним следует $, `, или . Если же используется форма $(command), все символы внутри скобок составляют команду и ни один из них не считается специальным символом.
Если подстановка производится внутри двойных кавычек, то в результатах подстановки не осуществляется разделение слов и раскрытие шаблонов имен файлов и каталогов.
5.7.5 АРИФМЕТИЧЕCКИЕ ПОДСТАНОВКИ (ARITHMETIC EXPANSION)
Арифметические подстановки позволяют вычислить значение арифметического выражения и подставить вместо него результат. Существует две формы задания арифметических подстановок:
$[expression]
$((expression)),
где expression трактуется так, как если бы оно было заключено в двойные кавычки, но встречающиеся в expression двойные кавычки трактуются как простой литерал. Внутри expression выполняются подстановки параметров и команд.
Синтаксис выражения expression подобен синтаксису арифметических выражений в языке C, подробнее об этом можно прочитать в разделе ARITHMETIC EVALUATION man-страницы по каманде bash. Например, команда
[user]$ echo $((2 + 3* 5))
в качестве результата выдает ’17’.
Если выражение некорректно, bash выдает сообщение об ошибке.
5.7.6 РАЗДЕЛЕНИЕ СЛОВ (WORD SPLITTING)
После завершения подстановок параметров, команд и арифметических выражений оболочка снова анализирует командную строку (в том виде, который она приобрела к этому моменту) и осуществляет разделение слов (word splitting).
Эта операция заключается в том, что в командной строке ищутся все вхождения символов- разделителей, определенных в переменой IFS, и в соответствующих местах строки разделяются на отдельные слова. Если значение IFS равно пустой строке, разделение слов не производится.
Если в командной строке не производилось никаких подстановок, то разбиение на слова не производится.