&& เป็นตรรกะ AND:
&& เป็นวิธีในการแสดงตรรกะและหมายถึงการแสดงออกทั้งหมดเป็นจริงเฉพาะเมื่อทั้งสองด้านเป็นจริง ในทางตรรกะแล้วมีการกล่าวข้อความทั้งหมด (P&Q) เป็นจริงเฉพาะเมื่อทั้ง P และ Q เป็นจริง
เป็นผลมาจากนี้คอมพิวเตอร์การรักษาโดยทั่วไป P & Q เป็นการประเมินผลการลัดวงจร ดังนั้นตั้งแต่คำสั่งทั้งหมดจะเป็นจริงถ้าทั้ง p และ q เป็นจริงแล้วถ้า P เป็นเท็จงบ Q ไม่ได้ประเมิน คอมพิวเตอร์โดยทั่วไปจะขี้เกียจ (มีประสิทธิภาพ) และไม่ต้องกังวลกับการประเมิน Q หากไม่มีเช่นกัน นี่เป็นจริงของตรรกะหรือดูลิงค์ก่อนหน้า
สามบริบทของ && ใน Bash:
1) การใช้การประเมินผลแบบลัดวงจรกับสถานะทางออกของคำสั่ง:
ทุกคำสั่งมีสถานะออก หากคำสั่งมีข้อผิดพลาดคำสั่งจะมีสถานะออกที่ไม่ใช่ศูนย์ ดังนั้นหากสถานะการออกไม่เป็นศูนย์และ && จะใช้ในการโยงคำสั่งเข้าด้วยกันในคำสั่งคำสั่งในภายหลังจะไม่ถูกประเมิน (ดำเนินการ) หากสถานะก่อนหน้าไม่มีสถานะการออกเป็น 0 (True) นี่เป็นเพราะการประเมินผลการลัดวงจร ดังนั้นถ้าคุณมี:
P && Q
Q จะไม่ถูกดำเนินการหาก P ไม่เป็นความจริง (ถ้า P ออกจากสถานะใด ๆ ยกเว้น 0 จะไม่เป็นจริง) เช่นเดียวกับ:
./configure && make
make จะไม่ถูกเรียกใช้งานหากการกำหนดค่ามีข้อผิดพลาดไม่ใช่จริง ดังนั้นโดยทั่วไปแล้วจะเป็นวิธีการเขียนในถ้างบแล้ว:
if ./configure ; then
make
fi
โปรดทราบว่าบริบทส่วนใหญ่ 0 เป็นเท็จ แต่ไม่ใช่เมื่อมาถึงสถานะออก
2) && สามารถใช้ในคำสั่งทดสอบของ Bash ที่สร้างขึ้นใน [[]]:
&& ยังสามารถใช้ภายในคำสั่งทดสอบในตัวใน bash [[]] เพื่อรวมนิพจน์ในลักษณะที่คล้ายกันกับการรวมคำสั่ง การทดสอบทั้งหมดจะเป็นจริงเฉพาะเมื่อทั้งตัวถูกดำเนินการ (ด้าน) ของ && เป็นจริงตัวอย่างเช่น:
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
จะเป็นวิธีการบอกว่า $ a เป็นจำนวนเต็มระหว่าง 2 ถึง 5 (ไม่รวม 2 และ 5)
3) การประเมินผลทางคณิตศาสตร์:
สุดท้ายสามารถใช้ && ในการประเมินทางคณิตศาสตร์เป็นแบบตรรกะและ ถ้าทั้งสอง (ตรรกะ AND) ของตัวเลขในรายการต่อไปนี้ไม่ใช่ศูนย์มันจะคืนค่า 0, จะส่งคืน 1 มิฉะนั้น:
kbrandt@desktop:~/$ echo $((1 & 1))
1
kbrandt@desktop:~/$ echo $((0 && 1))
0