awk:強制戻り状態ですか?

awk:強制戻り状態ですか?

これは私の後継です。前の質問

私は/ 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は1行だけ印刷します。

$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1

awkをステータス "1"に強制終了し、一致するすべての行を印刷できますか?

ベストアンサー1

状態を変数に保存し、ENDブロックで使用します。

awk -F: 'NF != 7 {print; err = 1}
         END {exit err}' /etc/passwd

おすすめ記事