Bu benim önceki sorumun takibi .
Bu kullanışlı snippit kullanarak / etc / passwd içindeki alanların sayısını onaylıyorum. Aşağıdaki örnekte, kullanıcıların 'fieldcount1' ve 'fieldcount2' yanlış sayıda alana sahip:
$ 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
Fark edeceğiniz gibi, awk 0 döndürme durumu ile çıkacaktır. Bu bakımdan, burada herhangi bir sorun yoktur.
Bu awk deyimini bir kabuk betiğine dahil etmek istiyorum. Hata olan tüm satırları yazdırmak ve dönüş kodunu 1 (hata) olarak ayarlamak istiyorum.
Belirli bir çıkış durumunu zorlamaya çalışabilirim, ancak awk yalnızca tek bir satır yazdırır:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Awk'yi '1' dönüş durumuyla çıkmaya ve eşleşen tüm satırları yazdırmaya zorlayabilir miyim?
; echo $?
sonra gibi bir şey ekleyerek bu awk deyiminin dönüş durumunu yakalamaya çalışıyorum . Ancak, komut dosyasını sonlandırdığı içinecho $?
asla çalıştırılmazEND {exit err}'
. Çıkmadan geri dönüş durumunu ayarlamanın bir yolu var mı?