เมื่อฉันต้องระงับเอาต์พุตบางประเภทเช่น
foo | grep -v bar
แต่บางครั้ง foo ให้เท่านั้น:
bar
bar
bar...
grep จะส่งคืน -1 ฉันจะแปลงรหัสทางออก 1 เป็น 0 ได้อย่างไร
เมื่อฉันต้องระงับเอาต์พุตบางประเภทเช่น
foo | grep -v bar
แต่บางครั้ง foo ให้เท่านั้น:
bar
bar
bar...
grep จะส่งคืน -1 ฉันจะแปลงรหัสทางออก 1 เป็น 0 ได้อย่างไร
คำตอบ:
คุณสามารถลองใช้ท่อผ่านสิ่งอื่นเช่น cat
เพื่อกำจัดรหัสทางออกจาก grep - ซึ่งอาจเป็นค้อนที่ใหญ่กว่าที่คุณต้องการ
|| true
หากคุณพยายามหลีกเลี่ยงความล้มเหลวภายใต้ set -e
อย่างน้อยใน bash คุณสามารถใช้
foo || (EC=$?; if [ $EC -ne 1 ]; then exit $EC; fi)
สิ่งนี้จะเปลี่ยนรหัสออก 1 ถึง 0 และจะไม่มีอะไรเปลี่ยนแปลง
(อาจไม่สอดคล้องกับ POSIX แต่อาจเป็นรุ่นที่สอดคล้องกับ POSIX อยู่)