Ini adalah kelanjutan dari pertanyaan saya sebelumnya .
Saya memvalidasi jumlah bidang di / etc / passwd menggunakan potongan praktis ini. Dalam contoh berikut, pengguna 'fieldcount1' dan 'fieldcount2' memiliki jumlah bidang yang salah:
$ 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
Seperti yang akan Anda perhatikan, awk akan keluar dengan status pengembalian 0. Dari sudut pandangnya, tidak ada masalah di sini.
Saya ingin memasukkan pernyataan awk ini ke dalam skrip shell. Saya ingin mencetak semua baris yang salah, dan mengatur kode kembali menjadi 1 (kesalahan).
Saya dapat mencoba untuk memaksakan status keluar tertentu, tetapi kemudian awk hanya mencetak satu baris:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Bisakah saya memaksa awk untuk keluar dengan status pengembalian '1', dan mencetak semua baris yang cocok?
; echo $?
setelah pernyataan awk ini. Namun,echo $?
tidak pernah dijalankan karenaEND {exit err}'
skrip berakhir. Apakah ada cara untuk mengatur status pengembalian tanpa keluar?