Это продолжение моего предыдущего вопроса .
Я проверяю количество полей в / etc / passwd, используя этот удобный фрагмент. В следующем примере пользователи 'fieldcount1' и 'fieldcount2' имеют неправильное количество полей:
$ awk -F: ' NF!=7 {print}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash:
$ echo $?
0
Как вы заметите, awk выйдет со статусом возврата 0. С этой точки зрения здесь нет проблем.
Я хотел бы включить этот оператор awk в сценарий оболочки. Я хотел бы напечатать все строки, которые являются ошибкой, и установить код возврата равным 1 (ошибка).
Я могу попытаться форсировать определенный статус выхода, но затем awk выводит только одну строку:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Могу ли я заставить awk выйти со статусом возврата '1' и распечатать все соответствующие строки?
; echo $?
этого оператора awk. Однакоecho $?
никогда не запускается, потому чтоEND {exit err}'
завершает сценарий. Есть ли способ установить статус возврата без выхода?