Це продовження мого попереднього питання .
Я перевіряю кількість полів у / etc / passwd за допомогою цього зручного snippit. У наступному прикладі користувачі '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}'
припиняє сценарій. Чи є спосіб встановити статус повернення без виходу?