Шрифт:
Современная и лучшая альтернатива — синтаксическая конструкция
Обратите внимание на тонкое отличие приведенной подстановки от команды
Вы уже видели простейший вариант присваивания параметра и подстановки значения параметра:
Проблема возникает, когда вы хотите вставить дополнительные символы в конец значения переменной. Предположим, что вы хотите написать короткий сценарий обработки файлов 1_tmp и 2_tmp. Вы могли бы написать следующие строки:
Но в каждом проходе цикла вы получите следующее сообщение:
В чем ошибка?
Проблема заключается в том, что командная оболочка попыталась подставить значение переменной
В каждом проходе цикла вместо
В командной оболочке можно выполнять разнообразные виды подстановок. Часто они помогают найти красивое решение задач, требующих обработки многих параметров. Самые распространенные виды подстановок значений параметров приведены в табл. 2.18.
Таблица 2.18
Шаблон подстановки параметра | Описание |
---|---|
${парам:-значение по умолчанию} | Если у парам нет значения, ему присваивается значение по умолчанию |
${#парам} | Задается длина парам |
${парам%строка} | От конца значения парам отбрасывается наименьшая порция, совпадающая сострокой , и возвращается остальная часть значения |
${парам%%строка} | От конца значения парам отбрасывается наибольшая порция, совпадающая сострокой , и возвращается остальная часть значения |
${парам#строка} | От начала значения парам отбрасывается наименьшая порция, совпадающая сострокой , и возвращается остальная часть значения |
${парам##строка} | От начала значения парам отбрасывается наибольшая порция, совпадающая сострокой , и возвращается остальная часть значения |
Эти подстановки очень полезны при работе со строками. Последние четыре варианта, удаляющие части строк, особенно пригодятся при обработке имен файлов и путей к ним, как показано в упражнении 2.18.
В приведенном далее сценарии показано применение шаблонов при подстановках значений параметров.
У этого сценария следующий вывод:
Как это работает
Первая подстановка
Подстановка
Подстановка