#awk #variable-declaration
#awk #объявление переменной
Вопрос:
Есть ли способ принудительно использовать (g / n) awk, чтобы переменные должны были быть объявлены / инициализированы перед использованием? (Как option explicit
в vb).
Заранее благодарю вас.
Комментарии:
1. Нет, не существует.
Ответ №1:
Одним из механизмов для обнаружения ошибок такого рода является поддержка «lint» в реализации Awk GNU (Gawk).
Базовый пример:
$ gawk --lint 'BEGIN { a }'
gawk: warning: statement has no effect
gawk: warning: reference to uninitialized variable `a'
Обратите внимание, что Gawk фактически «компилирует» код за один проход и знает обо всех переменных. Он создает их экземпляры до начала выполнения. То есть, все переменные фактически объявляются по их появлению в программе. Однако это не приводит к их инициализации.
Реализация Awk могла бы работать динамически, создавая экземпляр переменной, когда она встречается в первый раз во время выполнения, но Gawk таким образом не работает.
Мы можем увидеть переменные, о которых знает Gawk, получив дамп, который отправляется в файл с именем awkvars.out
:
$ gawk --dump-variables 'function foo() { return x }'
$ grep x awkvars.out
x: untyped variable
Смотрите: функция, foo
не выполнявшаяся, x
известна и указана как переменная.