To kontynuacja mojego wcześniejszego pytania .
Sprawdzam liczbę pól w / etc / passwd za pomocą tego poręcznego snippta. W poniższym przykładzie użytkownicy „fieldcount1” i „fieldcount2” mają niepoprawną liczbę pól:
$ 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
Jak zauważysz, awk zakończy pracę ze statusem zwrotu 0. Z jego punktu widzenia nie ma tu żadnych problemów.
Chciałbym włączyć tę instrukcję awk do skryptu powłoki. Chciałbym wydrukować wszystkie wiersze, które są błędami, i ustawić kod powrotu na 1 (błąd).
Mogę spróbować wymusić określony status wyjścia, ale wtedy awk wypisuje tylko jedną linię:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Czy mogę zmusić awk do wyjścia ze statusem zwrotu „1” i wydrukować wszystkie pasujące linie?
; echo $?
po tej instrukcji awk. Jednakecho $?
nigdy nie jest uruchamiany, ponieważEND {exit err}'
kończy skrypt. Czy istnieje sposób ustawienia statusu zwrotu bez wychodzenia?