ที่นี่มันแสดงให้เห็นถึงการใช้||
และ&&
ในบรรทัดเดียวเพื่อเชื่อมต่อการดำเนินการคำสั่ง: ฉันจะตรวจสอบข้อผิดพลาด apt-get ในสคริปต์ทุบตีได้อย่างไร
ฉันกำลังพยายามหยุดการประมวลผลสคริปต์หากเงื่อนไขบางอย่างล้มเหลว
เช่น
false || echo "Obvious error because its false on left" && exit
ที่นี่มันพิมพ์Obvious error because its false on the left
และออกจากคอนโซลซึ่งเป็นสิ่งที่ฉันต้องการ
true || echo "This shouldn't print" && exit
ที่นี่ไม่มีการพิมพ์เสียงสะท้อน แต่exit
คำสั่งทำงานได้ดีเช่นคอนโซลถูกปิดไม่ควรexit
คำสั่งไม่ทำงานเพราะคำสั่ง echo ทางด้านขวาไม่ได้ถูกดำเนินการ หรือโดยค่าเริ่มต้นข้อความที่ถือว่าเป็นเท็จทางด้านซ้ายของ&&
ผู้ประกอบการ?
แก้ไข: ฉันควรได้กล่าวถึงก่อนหน้านี้เป้าหมายของฉันคือการสะท้อนข้อผิดพลาดและออกหากไม่ชัดเจน wrt กรณีเฉพาะของฉันในการจับข้อผิดพลาดเมื่อจัดกลุ่มเงื่อนไขโดยใช้ && และ | |, @ bodhi.zazen คำตอบจะช่วยแก้ปัญหา
@takatakatek คำตอบทำให้ชัดเจนมากขึ้นเกี่ยวกับการควบคุมการไหลและลิงค์คู่มือทุบตีเป็นเลิศ
@muru ตอบมีคำอธิบายที่ดีว่าทำไมไม่ใช้ set -e ถ้าคุณต้องการให้ข้อความแสดงความผิดพลาดแบบกำหนดเองถูกเลือกด้วยการใช้ perl และ trap ซึ่งฉันคิดว่าเป็นวิธีที่มีประสิทธิภาพมากขึ้น