ฉันกำลังเขียนสคริปต์ Bash ที่ใช้ตัวเลือก N เรียกพวกเขาว่า -1, -2, ... , -N ต่อไปนี้ใช้กับการใช้ตัวเลือก:
- อาจมีตัวเลือกจำนวนเท่าใดก็ได้ตั้งแต่ 0 - N
- ไม่มีตัวเลือกที่จะโต้แย้งใด ๆ
- ตัวเลือกอาจมีให้ในลำดับใด ๆ
ฉันดำเนินการตามวิธีมาตรฐาน:
while [[ $# -gt 0 ]]
do
OPTION="$1"
case $OPTION in
-1)
process_option_1
shift
;;
-2)
process_option_2
shift
;;
...
-N)
process_option_N
shift
;;
*)
echo "Unknown option $OPTION. Aborting..."
exit 1
esac
done
เป้าหมาย 1
ฉันต้องการเพิ่มสองตัวเลือกเพิ่มเติม:
- พัก นี่หมายถึง -1, -2, ... -N
- -q นี่หมายถึงโหมด "เงียบ" คือไม่พิมพ์อะไรไปยังจอแสดงผล
ถ้า พัก จะต้องปรากฏด้วยตัวเองหรือด้วย -q เท่านั้น
-q อาจใช้กับ " พัก รูปแบบการเรียก "หรือ" -1 -2 ... -N "
เป้าหมาย 2
ฉันต้องการบังคับใช้ว่าไม่มีตัวเลือกซ้ำ
คำถาม
ฉันมีเวลายากที่จะขยายตรรกะเพื่อบรรลุเป้าหมาย
ฉันต้องการถามชุมชน: ฉันจะบรรลุเป้าหมายเหล่านี้ได้อย่างไร
โปรดทราบว่าเป้าหมาย 2 เป็นเป้าหมายรอง หากใครบางคนมีทางออกสำหรับเป้าหมาย 1 แต่ไม่ใช่สำหรับเป้าหมาย 2 โดยทั้งหมดโปรดระบุ!
แก้ไขเพื่อเพิ่ม: ฉันสามารถเดรัจฉานบังคับตรรกะ; สิ่งที่ฉันหมายถึงคือฉันกำลังมองหาวิธีแก้ปัญหาที่สะอาดและสง่างามที่ไม่เกี่ยวข้องกับการวนซ้ำตัวเลือกที่ไม่จำเป็นซึ่งให้การรวมอัตโนมัติของการประมวลผลสำหรับตัวเลือกใหม่ ๆ