这是我先前问题的跟进。
我正在使用此方便的代码段验证/ 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语句合并到shell脚本中。我想打印所有错误的行,并将返回代码设置为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语句之后添加类似内容来捕获此awk语句的返回状态。但是,echo $?
永远不会运行,因为END {exit err}'
终止脚本。有没有一种方法可以设置返回状态而不退出?