Dies ist eine Fortsetzung meiner früheren Frage .
Ich überprüfe die Anzahl der Felder in / etc / passwd mit diesem praktischen Snippit. Im folgenden Beispiel haben die Benutzer 'fieldcount1' und 'fieldcount2' die falsche Anzahl von Feldern:
$ 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
Wie Sie feststellen werden, wird awk mit einem Rückgabestatus von 0 beendet. Aus seiner Sicht gibt es hier keine Probleme.
Ich möchte diese awk-Anweisung in ein Shell-Skript integrieren. Ich möchte alle fehlerhaften Zeilen drucken und den Rückkehrcode auf 1 setzen (Fehler).
Ich kann versuchen, einen bestimmten Exit-Status zu erzwingen, aber awk gibt dann nur eine einzelne Zeile aus:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Kann ich awk zwingen, mit dem Rückgabestatus '1' zu beenden und alle übereinstimmenden Zeilen auszudrucken?
; echo $?
nach dieser awk-Anweisung etwas hinzufüge . Wirdecho $?
jedoch nie ausgeführt, daEND {exit err}'
das Skript beendet wird. Gibt es eine Möglichkeit, den Rückgabestatus festzulegen, ohne das Programm zu verlassen?