ฉันประหลาดใจเสมอที่ในโฟลเดอร์/binมี[โปรแกรม
นี่คือสิ่งที่เรียกว่าเมื่อเรากำลังทำอะไรเช่น: if [ something ]?
โดยการเรียก[โปรแกรมอย่างชัดเจนในเชลล์มันจะถามหาที่สอดคล้องกัน]และเมื่อฉันให้วงเล็บปิดมันดูเหมือนจะไม่ทำอะไรเลยไม่ว่าฉันจะแทรกอะไรระหว่างวงเล็บ
จำเป็นต้องพูดทางปกติเกี่ยวกับการให้ความช่วยเหลือเกี่ยวกับโปรแกรมไม่ทำงานเช่นค่าman [มิได้[ --helpงาน
man '['ทำงานได้ดีสำหรับฉัน - ไม่ว่าคุณจะลืมพูด[หรือคุณมีคำจำกัดความที่แตกต่างกันของ "งาน"
[ประเมินอาร์กิวเมนต์ของมันดังนั้นคุณต้องมีช่องว่างระหว่างทั้งหมด [ a=b ]ไม่ใช่การเปรียบเทียบ: มันจะเป็นจริงเสมอ (เป็นสตริงเดียว: "a = b" ซึ่งประเมินเสมอเป็นจริง ) และคุณควร จำกัด จำนวนอาร์กิวเมนต์เป็น 4 (แม้ว่าการใช้งานล่าสุดจะอนุญาตมากกว่านี้ .. . การ จำกัด ที่ 4 ทำให้พกพาได้มากกว่าตัวอย่างเช่น: [ "a" = "b" ]มีอาร์กิวเมนต์ 4 ข้อแล้ว: "a" "=" "b" และสิ้นสุดการทดสอบที่ไม่จำเป็น ARG: "]") หากคุณต้องการข้อมูลเพิ่มเติม: ทดสอบลูกโซ่ด้วย:if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!ด้วยตัวเอง (unescaped และ unquoted) จะไม่ถูกแทนที่และดียิ่งขึ้นกว่าif ! [ ...นี้ การขยายตัวของ bash ทั้งหมดที่ใช้!รวมถึงตัวละครอื่นเป็นอย่างน้อย
[-builtin ในbash(และอาจจะเปลือกหอยอื่น ๆ เช่นกัน) /bin/[และว่าเรื่องนี้อาจนำมาใช้แทน นอกจากนี้ยังมีtest- คำสั่งซึ่งในหลาย ๆ ระบบเป็นลิงก์สัญลักษณ์ไปยัง/bin/[(หรือกลับกัน) - แต่สำหรับคนอื่น ๆ เป็นคำสั่งแยกต่างหาก
[อ้างถึงtestคำสั่งแม้ว่าไม่exprควรดังนั้นman test