П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 179528 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 77449 раз(а).

Учебник HTML.
Просмотров 75124 раз(а).

Руководство по PHP5.
Просмотров 46157 раз(а).

Хостинг через призму DNS.
Просмотров 53398 раз(а).

Подборка текстов стандартных документов.
Просмотров 46144 раз(а).

Учебник PHP - Самоучитель
Просмотров 52304 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 52854 раз(а).

Внешние атаки...
Просмотров 42767 раз(а).

Учебник PHP.
Просмотров 38285 раз(а).

SSI в примерах.
Просмотров 28384 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Руководство пользователя для GNU Awk

9. Управляющие операторы в действиях

9.7 Оператор next

Оператор next понуждает awk немедленно прекратить обработку текущей записи и перейти к следующей записи. Это значит, что последующие правила не применяются к текущей записи. Также не выполняются оставшиеся действия текущего правила.

Не совсем так он действует в случае функции getline (см. раздел 5.8 [Явный ввод по getline], стр. 53). Он тоже побуждает awk прочесть немедленно следующую запись, но никак не меняет ход управления. То есть остаток текущих действий переносится на следующую запись.

На самом верхнем уровне выполнение awk-программы есть цикл, который читает входную запись и проверяет ее на соответствие образцу каждого правила. Если представлять себе этот цикл как оператор for, тело которого содержит правила, то оператор next аналогичен оператору continue: он пропускает конец тела этого неявного цикла и вычисляет increment (т.е, читает следующую запись).

Например, если ваша awk-программа работает только на записях с четырьмя полями и вы не хотите ее прекращения при несоответствующем вводе, вы можете использовать такое правило около начала программы:

NF != 4 -
err = sprintf("%s:%d: skipped: NF != 4"n", FILENAME, FNR) print err ?&
 "/dev/stderr" next ""

так что следующие правила не увидят плохую запись. Сообщение об ошибке перенаправляется по стандартному потоку выдачи ошибок, как и следует для сообщений об ошибках. См. раздел 6.7 [Специальные имена файлов в gawk], стр. 72.

Соответственно стандарту POSIX, поведение не определено, если оператор next использован в правиле BEGIN или END. gawk трактует это как синтаксическую ошибку. Хотя POSIX допускает это, некоторые другие реализации не терпят оператор next внутри тел функций (см. главу 13 [Функции, определенные пользователем], стр. 153). Также как и операторы next в других позициях, next внутри тела функции читает следующую запись и начинает ее обработку с первого правила программы. Если оператор next приводит к концу ввода, то выполняется код из любого правила END. См. раздел 8.1.5 [Специальные образцы BEGIN и END], стр. 100.

ВНИМАНИЕ: некоторые реализации awk генерируют динамическую ошибку, если вы используете оператор next внутри пользовательской функции (см. главу 13 [Функции, определенные пользователем], стр. 153). gawk не имеет таких проблем.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru