Хорошо, я понял: проблема заключается в разных определениях ИСТИНА и ЛОЖЬ между статусом выхода test
и условием цикла while
в awk
.
Положительная команда test
дает код выхода 0
для ИСТИНА и отрицательный в 1
для ЛОЖЬ.
Однако в awk
цикл while
интерпретирует 0
как ЛОЖЬ, а 1
как ИСТИНА, так что в точности противоположное определение.
В качестве примера:
awk '{ while ( 0 ) ; { print "0" } }' file
не выдаст никакого вывода, а
awk '{ while (1) ; { print "1" } }' file
выведет бесконечное число 1
с.
Таким образом, передовой опыт должен быть явным в такой комбинации
while ( system("command") == 0 )
или
while ( system("command") == 1 )
соответственно.
Итак, в моем случае
while ( system("test -e " file ) == 0 )
показывает ожидаемое поведение.
Я решил ту же проблему. У меня было
pam_succeed_if (lightdm: auth): требование «user ingroup nopasswdlogin» не было выполнено пользователем «xxxxxxx»
в среде с аутентификацией AD, Windows 2016, {{ 1}} ubuntu 16.04.
Отредактируйте /etc/pam.d/lightdm
и удалите nopasswdlogin
из этой строки:
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin