แม้ว่าฉันจะไม่ได้ตอบคำถามดั้งเดิมเกี่ยวกับคำสั่ง no-op ปัญหามากมาย (ถ้าไม่มากที่สุด) เมื่อใครคิดว่า " ในสาขานี้ฉันไม่ต้องทำอะไร " สามารถข้ามได้โดยเพียงปรับโครงสร้างตรรกะเพื่อให้สาขานี้ชนะ ไม่เกิดขึ้น
ฉันพยายามที่จะให้กฎทั่วไปโดยใช้ตัวอย่าง OPs
ไม่ทำอะไรเลยเมื่อ $ a มากกว่า "10" พิมพ์ "1" ถ้า $ a น้อยกว่า "5" มิฉะนั้นให้พิมพ์ "2"
เราต้องหลีกเลี่ยงสาขาที่$a
ได้รับมากกว่า 10 ดังนั้นจึง$a < 10
เป็นเงื่อนไขทั่วไปที่สามารถนำไปใช้กับแต่ละอื่น ๆ ตามเงื่อนไข
ในแง่ทั่วไปเมื่อคุณบอกว่าไม่ทำอะไรเลยเมื่อ Xแล้วใช้ถ้อยคำว่ามันเป็นหลีกเลี่ยงสาขาที่ X โดยปกติคุณสามารถทำให้การหลีกเลี่ยงเกิดขึ้นได้โดยเพียงแค่ลบ X และนำไปใช้กับเงื่อนไขอื่นทั้งหมด
ดังนั้นตัวอย่าง OPs ที่มีกฎที่ใช้อาจถูกปรับโครงสร้างเป็น:
if [ "$a" -lt 10 ] && [ "$a" -le 5 ]
then
echo "1"
elif [ "$a" -lt 10 ]
then
echo "2"
fi
เพียงแค่การเปลี่ยนแปลงของข้างต้นล้อมรอบทุกอย่างใน$a < 10
สภาพ:
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(สำหรับตัวอย่างเฉพาะนี้@Flimzys การปรับโครงสร้างจะดีกว่าแน่นอน แต่ฉันต้องการให้กฎทั่วไปสำหรับทุกคนที่ค้นหาวิธีการไม่ทำอะไรเลย)
true
ไม่มีก็ไม่ทำงาน มันสร้างไว้ในเปลือกหอยและไม่ทำอะไรเลย