Шрифт:
Члены структуры полностью аналогичны описанным ранее для
Как и для
Таблица 12.5. Флаги для
Константа | Значение |
---|---|
WRDE_APPEND | Добавить результаты текущего вызова к предыдущим |
WRDE_DOOFFS | Зарезервировать we_offs мест в начале we_wordv |
WRDE_NOCMD | Запретить подстановку команд |
WRDE_REUSE | Повторно использовать память, на которую указывает we_wordv |
WRDE_SHOWERR | Не молчать при возникновении во время разворачивания ошибок |
WRDE_UNDEF | Неопределенные переменные оболочки должны вызывать ошибку |
Возвращаемое значение равно 0, если все прошло хорошо, или одно из значений из табл. 12.6, если нет.
Таблица 12.6. Возвращаемые значения ошибок для
Константа | Значение |
---|---|
WRDE_BADCHAR | Метасимвол (конец строки, '|', &, ;, <, >, (, ), {, или }) в недопустимом месте |
WRDE_BADVAL | Переменная не определена при установленном WRDE_UNDEF |
WRDE_CMDSUB | Попытка подстановки команды при установленном WRDE_NOCMD |
WRDE_NOSPACE | Была проблема с выделением динамической памяти |
WRDE_SYNTAX | Синтаксическая ошибка оболочки. |
Мы оставляем вам в качестве упражнения (см. далее) модификацию
12.8. Регулярные выражения
Регулярные выражения являются способом описания текстовых шаблонов для сопоставления. Если вы вообще сколько-нибудь использовали GNU/Linux или Unix, вы без сомнения знакомы с регулярными выражениями: они являются фундаментальной частью инструментария программиста Unix. Они неотъемлемы от таких повседневных программ, как
POSIX определяет два вида регулярных выражений: базовый и расширенный. Программы типа
Чтобы сопоставить регулярное выражение, нужно сначала откомпилировать строчную версию регулярного выражения. Компиляция преобразует регулярное выражение во внутренний формат. Затем откомпилированная форма исполняется для строки для проверки, совпадает ли она с первоначальным регулярным выражением. Функции следующие.
Компилирует регулярное выражение