นี่คือการติดตามของฉันคำถามก่อนหน้านี้
ฉันกำลังตรวจสอบจำนวนฟิลด์ใน / etc / passwd โดยใช้ snippit ที่มีประโยชน์นี้ ในตัวอย่างต่อไปนี้ผู้ใช้ '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}'
สิ้นสุดสคริปต์ มีวิธีตั้งสถานะการคืนสินค้าโดยไม่ออกหรือไม่?