Questo è un seguito alla mia domanda precedente .
Sto convalidando il numero di campi in / etc / passwd usando questo pratico frammento. Nel seguente esempio, "fieldcount1" e "fieldcount2" degli utenti hanno un numero errato di campi:
$ 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
Come noterai, awk uscirà con uno stato di ritorno di 0. Dal suo punto di vista, qui non ci sono problemi.
Vorrei incorporare questa affermazione awk in uno script di shell. Vorrei stampare tutte le righe che sono errori e impostare il codice di ritorno su 1 (errore).
Posso provare a forzare un particolare stato di uscita, ma poi awk stampa solo una singola riga:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Posso forzare awk a uscire con uno stato di ritorno di '1' e stampare tutte le righe corrispondenti?
; echo $?
questa dichiarazione awk. Tuttavia,echo $?
non viene mai eseguito perchéEND {exit err}'
termina lo script. C'è un modo per impostare lo stato di ritorno senza uscire?