Ceci fait suite à ma question précédente .
Je valide le nombre de champs dans / etc / passwd à l'aide de cet extrait pratique. Dans l'exemple suivant, les utilisateurs 'fieldcount1' et 'fieldcount2' ont le mauvais nombre de champs:
$ 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
Comme vous le remarquerez, awk se terminera avec un état de retour de 0. De son point de vue, il n'y a aucun problème ici.
Je voudrais incorporer cette déclaration awk dans un script shell. Je voudrais imprimer toutes les lignes qui sont des erreurs et définir le code de retour sur 1 (erreur).
Je peux essayer de forcer un statut de sortie particulier, mais awk n'imprime qu'une seule ligne:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Puis-je forcer awk à quitter avec un état de retour de «1» et imprimer toutes les lignes qui correspondent?
; echo $?
après cette déclaration awk. Toutefois, ilecho $?
n'est jamais exécuté car leEND {exit err}'
met fin au script. Existe-t-il un moyen de définir le statut de retour sans quitter?