Резюме
Идиоматический метод создания пустого массива в Awk заключается в использовании split()
.
Подробнее
Чтобы упростить ваш пример выше и сосредоточиться на вашем вопросе, а не на опечатках, фатальная ошибка может быть вызвана с помощью:
BEGIN{
LINT = "fatal";
if (thread in threads_start) {
print "if";
} else {
print "not if";
}
}
, которая выдает следующую ошибку:
gawk: cmd. line:3: fatal: reference to uninitialized variable `thread'
Предоставление thread
значения перед его использованием для поиска в threads_start
проходит linting:
BEGIN{
LINT = "fatal";
thread = 0;
if (thread in threads_start) {
print "if";
} else {
print "not if";
}
}
производит:
not if
Чтобы создать ошибку linting с неинициализированным массивом, нам нужно попытаться получить доступ к несуществующей записи:
BEGIN{
LINT = "fatal";
thread = 0;
if (threads_start[thread]) {
print "if";
} else {
print "not if";
}
}
производит:
gawk: cmd. line:4: fatal: reference to uninitialized element `threads_start["0"]'
Итак, на самом деле не нужно для создания пустого массива в Awk, но если вы хотите сделать это и ответить на свой вопрос, используйте split()
:
BEGIN{
LINT = "fatal";
thread = 0;
split("", threads_start);
if (thread in threads_start) {
print "if";
} else {
print "not if";
}
}
производит:
not if