โปรดทราบว่า[] && 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
จะล้มเหลวจะถูกดำเนินการซึ่งจะไม่เกิดขึ้นกับecho
if
ตัวอย่างอื่น:
[ -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 …
มีคำตอบที่สมบูรณ์มากขึ้นในคำถามที่ซ้ำกันส่วนใหญ่นี้