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