Основы программирования в Linux
Шрифт:
Но в каждом проходе цикла вы получите следующее сообщение:
В чем ошибка?
Проблема заключается в том, что командная оболочка попыталась подставить значение переменной
В
В командной оболочке можно выполнять разнообразные виды подстановок. Часто они помогают найти красивое решение задач, требующих обработки многих параметров. Самые распространенные виды подстановок значений параметров приведены в табл. 2.18.
Таблица 2.18
| Шаблон подстановки параметра | Описание |
|---|---|
| ${парам:-значение по умолчанию} | Если у парам нет значения, ему присваивается значение по умолчанию |
| ${#парам} | Задается длина парам |
| ${парам%строка} | От конца значения парам отбрасывается наименьшая порция, совпадающая сострокой , и возвращается остальная часть значения |
| ${парам%%строка} | От конца значения парам отбрасывается наибольшая порция, совпадающая сострокой , и возвращается остальная часть значения |
| ${парам#строка} | От начала значения парам отбрасывается наименьшая порция, совпадающая сострокой , и возвращается остальная часть значения |
| ${парам##строка} | От начала значения парам отбрасывается наибольшая порция, совпадающая сострокой , и возвращается остальная часть значения |
Эти подстановки очень полезны при работе со строками. Последние четыре варианта, удаляющие части строк, особенно пригодятся при обработке имен файлов и путей к ним, как показано в упражнении 2.18.
В приведенном далее сценарии показано применение шаблонов при подстановках значений параметров.
У
Как это работает
Первая подстановка
Подстановка
Подстановка
Шаблон
Шаблон
Поскольку в системах UNIX и Linux многое основано на идеи фильтров, результат какой-либо операции часто должен перенаправляться вручную. Допустим, вы хотите преобразовать файлы GIF в файлы JPEG с помощью программы cjpeg:
Порой вам может потребоваться выполнить такого рода операцию над большим числом файлов. Как автоматизировать подобное перенаправление? Это очень просто:
Этот сценарий, giftojpeg, создает в текущем каталоге для каждого файла формата GIF файл формата JPEG.
Встроенные документы
Особый способ передачи из сценария командной оболочки входных данных команде — использование встроенного документа (here document). Такой документ позволяет команде выполняться так, как будто она читает данные из файла или с клавиатуры, в то время как на самом деле она получает их из сценария.
Встроенный документ начинается со служебных символов
Последний реанорец. Том V
4. Высшая Речь
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Хрестоматия по истории СССР. Том 1
Научно-образовательная:
история
рейтинг книги
Большая энциклопедия консервирования
Дом и Семья:
кулинария
рейтинг книги
Космические скитальцы (Сборник)
Классика мировой фантастики
Фантастика:
боевая фантастика
рейтинг книги