ขณะนี้ฉันกำลังเขียนสคริปต์ Bash ซึ่งมีข้อกำหนดดังต่อไปนี้:
- ควรรันบนแพลตฟอร์ม Unix / Linux ที่หลากหลาย
- ควรสนับสนุนตัวเลือกทั้งแบบสั้นและยาว (GNU)
ฉันรู้ว่าgetopts
จะเป็นวิธีที่ต้องการในแง่ของการพกพา แต่ AFAIK มันไม่สนับสนุนตัวเลือกยาว
getopt
รองรับตัวเลือกยาว แต่BashGuideแนะนำอย่างยิ่งกับมัน:
ห้ามใช้ getopt (1) getopt ไม่สามารถจัดการกับสตริงอาร์กิวเมนต์ว่างเปล่าหรือขัดแย้งกับช่องว่างที่ฝังตัว โปรดลืมว่ามันมีอยู่จริง
ดังนั้นยังคงมีตัวเลือกในการแยกวิเคราะห์ด้วยตนเอง นี่เป็นข้อผิดพลาดง่ายสร้างรหัสสำเร็จรูปค่อนข้างมากและฉันต้องจัดการข้อผิดพลาดด้วยตัวเอง (ฉันเดาว่าgetopt(s)
จัดการข้อผิดพลาดด้วยตัวเอง)
ดังนั้นสิ่งที่จะเป็นตัวเลือกที่ต้องการในกรณีนี้