GNU/Linux >> Belajar Linux >  >> Linux

Getopt, Getopts, Atau Parsing Manual – Apa yang Digunakan Saat Saya Ingin Mendukung Opsi Pendek dan Panjang?

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.


Linux
  1. Apa itu TAM dan mengapa Anda ingin menjadi TAM?

  2. Kapan Dan Mengapa Saya Harus Menggunakan Pembaruan Apt-get?

  3. Kapan saya harus menggunakan TCP_NODELAY dan kapan TCP_CORK?

  1. Apa pentingnya caddr_t dan kapan digunakan?

  2. Kapan menggunakan pthread_exit() dan kapan menggunakan pthread_join() di Linux?

  3. Sistem file apa yang digunakan saat menggunakan Windows dan Linux?

  1. Apa itu Perintah Chown di Linux dan Cara Menggunakannya

  2. Apa perbedaan antara satu garis putus-putus dan dua garis untuk parameter prompt perintah?

  3. Kapan menggunakan Bash dan kapan menggunakan Perl/Python/Ruby?