ฉันต้องขออภัยล่วงหน้าหากนี่เป็นคำถามที่ซ้ำกัน ฉันพยายามค้นหา / ตรวจสอบก่อนถามที่นี่
ฉันรู้สึกสะดวกสบายกับการเขียนหนึ่ง liners เช่นนี้:
foocommand && foocommand2 && foocommand3
แนวคิดที่ว่าฉันต้องการเพียงคำสั่งที่ตามมาเท่านั้นที่จะทำงานหากคำสั่งก่อนหน้านี้ "สำเร็จ"
ฉันกำลังเขียนสคริปต์ที่ค่อนข้างยาวและหนึ่งบรรทัดนี้เป็นไปไม่ได้เพราะมันดูเหมือนว่าจะทำให้ผู้อื่นสับสนรหัสขนาดใหญ่
ฉันต้องการเว้นวรรคคำสั่งและเขียนความคิดเห็นไว้ในสคริปต์ ฉันจะทำสิ่งนี้และยังคงเทียบเท่า && อยู่ได้อย่างไร
||
และ&&
(ตรงกันข้ามกับ|
หรือ&
) เรียกว่าการลัดวงจร พฤติกรรมที่ใช้กับผู้ประกอบการหลังเรียกว่าการประเมินความกระตือรือร้น
a && b && c
จะทำงานเฉพาะb
ถ้าa
ประสบความสำเร็จดังนั้น "เพียงทำงานc
ถ้าb
ประสบความสำเร็จ" และ "เพียงทำงานc
ถ้าa
และb
ทั้งสองประสบความสำเร็จ" เป็นงบเทียบเท่า: b
ไม่สามารถประสบความสำเร็จเว้นแต่a
ประสบความสำเร็จ
a || b && c
เป็นตัวอย่างเพิ่มเติม
true || false && echo hi
ข้อมูลจำเพาะอ่านตัวดำเนินการ "&&" และ "||" จะต้องมีลำดับความสำคัญเท่ากันและจะถูกประเมินด้วยการเชื่อมโยงด้านซ้าย hi
&&
ไม่ได้หมายความว่าคำสั่งที่ตามมาจะทำงานถ้าก่อนหน้านี้หนึ่งที่ประสบความสำเร็จ หมายความว่าคำสั่งจะทำงานหากผลลัพธ์โดยรวมของคำสั่งก่อนหน้าทั้งหมดในรายการคำสั่งนั้นสำเร็จ คุณอาจรู้เรื่องนี้ แต่ผู้อ่านในอนาคตอาจเข้าใจผิด