Действие AWK выполнено несмотря на ложное условие - PullRequest
2 голосов
/ 23 апреля 2020

Это мой сценарий AWK

#!/bin/awk -f
(1 == 2)
{
  print "OK"
}

И вывод

OK
OK
OK
...

Условие 1==2 явно неверное, но, тем не менее, действие выполняется. Почему это?!

1 Ответ

2 голосов
/ 23 апреля 2020

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

Здесь (1 == 2) интерпретируется отдельно от блока {...}, который начинается с новой строки. (1 == 2) возвращает false, и ничего не печатается, но следующий { ... } блок считается независимым, и здесь OK печатается для каждой строки.

Вы должны исправить это с помощью:

#!/bin/awk -f
(1 == 2) {
  print "OK"
}

Теперь все, что находится внутри { ... }, будет оцениваться только при успешном выполнении условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...