ใช้&&
โอเปอเรเตอร์
cmd1 && cmd2 && cmd3
ใน shellscripting &&
และ||
โอเปอเรเตอร์ถูกจำลองหลังจากปรับใช้งานตัวดำเนินการเชิงตรรกะใน C &&
หมายถึงตัวดำเนินการ AND และ||
หมายถึง OR Unix เกี่ยวข้องกับ C อย่างแน่นหนาและใน C ตัวถูกดำเนินการตัวที่สองของตัวดำเนินการเชิงตรรกะไม่ได้รับการประเมินถ้าทราบผลลัพธ์จากตัวถูกดำเนินการแรก เช่น"false && x"
นี้ใช้false
สำหรับการใด ๆx
ดังนั้นจึงไม่จำเป็นต้องประเมินผลx
(โดยเฉพาะถ้าx
เป็นการเรียกใช้ฟังก์ชัน); "true || x"
เช่นเดียวกันกับ นี้จะเรียกว่าไฟฟ้าลัดวงจร-ความหมาย
และใน Unix มันเป็นแบบดั้งเดิมในการตีความค่าส่งคืนคำสั่งว่า "ความสำเร็จที่สมบูรณ์" ค่าความจริง: รหัสทางออก 0 หมายถึงtrue
(สำเร็จ), ไม่ใช่ศูนย์false
(ล้มเหลว) ดังนั้นเมื่อคำสั่งแรกในการcmd1 && cmd2
ส่งกลับ"false"
(สถานะทางออกที่ไม่ใช่ศูนย์ซึ่งบ่งชี้ความล้มเหลว) สถานะของคำสั่งผสมเป็นที่รู้จักกัน: ความล้มเหลว ดังนั้นการตีความโดยรวมของcmd1 && cmd2
อาจเป็น: "ดำเนินการcmd1
และจากนั้นถ้ามันไม่ได้ล้มเหลวcmd2
" สิ่งใดที่คุณต้องการในคำถามของคุณ
ในทำนองเดียวกันกับ OR: cmd1 || cmd2
สามารถตีความได้ว่า "execute cmd1
หรือถ้าล้มเหลวcmd2
"
Protip:สำหรับกลุ่มที่ยาวขึ้น&&
ลองใส่set -e
สคริปต์ของคุณ มันเป็นพื้นเปลี่ยนแปลงอัฒภาค;
เข้า&&
กับคู่ของกรณีพิเศษ