Saat ini saya sedang menulis skrip Bash yang memiliki persyaratan berikut:
- harus berjalan di berbagai platform Unix/Linux
- itu harus mendukung opsi pendek dan (GNU) panjang
Saya tahu bahwa getopts
akan menjadi cara yang lebih disukai dalam hal portabilitas tetapi AFAIK tidak mendukung opsi yang lama.
getopt
mendukung opsi panjang tetapi BashGuide sangat menyarankan untuk tidak melakukannya:
Jangan pernah menggunakan getopt(1). getopt tidak dapat menangani string argumen kosong, atau
argumen dengan spasi putih yang disematkan. Harap lupakan bahwa itu pernah
ada.
Jadi, masih ada opsi penguraian manual. Ini rawan kesalahan, menghasilkan beberapa kode boilerplate, dan saya harus menangani kesalahan sendiri (saya kira getopt(s)
melakukan penanganan kesalahan sendiri).
Jadi, apa pilihan yang lebih disukai dalam kasus ini?
Jawaban yang Diterima:
Jika harus portabel untuk berbagai Unices, Anda harus tetap menggunakan POSIX sh. Dan AFAIU di sana Anda tidak punya pilihan selain menggulirkan penanganan argumen dengan tangan.