โปรดทราบว่า[] && cmdไม่เหมือนกับif .. fiงานก่อสร้าง
บางครั้งพฤติกรรมของมันสวยคล้ายกันและคุณสามารถใช้แทน[] && cmd if .. fiแต่บางครั้งเท่านั้น หากคุณมีมากกว่าหนึ่งคำสั่งที่จะดำเนินการถ้าเงื่อนไขหรือคุณต้องif .. else .. fiระวังและ whatch ตรรกะ
ตัวอย่างสองตัวอย่าง:
[ -z "$VAR" ] && ls file || echo wiiii
ไม่เหมือนกัน
if [ -z $VAR ] ; then
ls file
else
echo wiii
fi
เพราะถ้าlsจะล้มเหลวจะถูกดำเนินการซึ่งจะไม่เกิดขึ้นกับechoif
ตัวอย่างอื่น:
[ -z "$VAR" ] && ls file && echo wiii
ไม่เหมือนกัน
if [ -z "$VAR" ] ; then
ls file
echo $wiii
fi
แม้ว่าการก่อสร้างนี้จะทำหน้าที่เดียวกัน
[ -z "$VAR" ] && { ls file ; echo wiii ; }
โปรดทราบ;หลังจากเสียงสะท้อนเป็นสิ่งสำคัญและจะต้องมี
ดังนั้นการกลับมาใช้คำกล่าวข้างต้นเราสามารถพูดได้
[] && cmd == หากคำสั่งแรกสำเร็จแล้วให้ดำเนินการคำสั่งถัดไป
if .. fi == หากเงื่อนไข (ซึ่งอาจเป็นคำสั่งทดสอบเช่นกัน) จากนั้นดำเนินการคำสั่ง (s)
ดังนั้นสำหรับการพกพาระหว่าง[และ[[ใช้งาน[เท่านั้น
ifเข้ากันได้กับ POSIX ดังนั้นหากคุณต้องเลือกระหว่าง[และifเลือกดูงานของคุณและพฤติกรรมที่คาดหวัง
[ … ]vs[[ … ]]vstest …มีคำตอบที่สมบูรณ์มากขึ้นในคำถามที่ซ้ำกันส่วนใหญ่นี้