โปรดทราบว่าสำหรับPIPE
การเป็นคำสั่งหรือลำดับของคำสั่งแล้ว:
if PIPE ; then
# do one thing if PIPE returned with zero status ($?=0)
else
# do another thing if PIPE returned with non-zero status ($?!=0), e.g. error
fi
สำหรับบันทึกที่[ expr ]
เป็นเปลือก builtin †test expr
ชวเลข
เนื่องจากgrep
ส่งกลับด้วยสถานะ 0 ในกรณีของการจับคู่และสถานะที่ไม่ใช่ศูนย์ในกรณีที่ไม่มีการจับคู่คุณสามารถใช้:
if grep -lq '^MYSQL_ROLE=master' ; then
# do one thing
else
# do another thing
fi
โปรดสังเกตว่าการใช้งาน-l
ที่มีความสำคัญเกี่ยวกับไฟล์ที่มีอย่างน้อยหนึ่งการแข่งขัน (เพื่อให้grep
ส่งคืนทันทีที่พบการแข่งขันหนึ่งโดยไม่จำเป็นต้องแยกวิเคราะห์ไฟล์อินพุตต่อไปโดยไม่จำเป็น)
† บนแพลตฟอร์มบางส่วน[ expr ]
ไม่ builtin แต่ปฏิบัติการจริง/bin/[
(ซึ่งอาร์กิวเมนต์สุดท้ายจะเป็น]
) ซึ่งเป็นเหตุผลที่[ expr ]
ควรมีช่องว่างรอบวงเล็บและทำไมมันจะต้องตามมาด้วยการเป็นหนึ่งในตัวคั่นรายการคำสั่ง ( ;
, &&
, ||
, |
, &
ขึ้นบรรทัดใหม่)