이것은 이전의 질문에 대한 후속 조치 입니다.
이 편리한 코드 조각을 사용하여 / etc / passwd의 필드 수를 확인하고 있습니다. 다음 예에서 사용자 '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}'
종료 되므로 실행되지 않습니다 . 종료하지 않고 반품 상태를 설정하는 방법이 있습니까?