which
adalah alat yang salah. getopts
biasanya juga builtin:
Sejak
getopts
mempengaruhi lingkungan eksekusi shell saat ini, umumnya disediakan sebagai built-in reguler shell.
~ for sh in dash ksh bash zsh; do "$sh" -c 'printf "%s in %s\n" "$(type getopts)" "$0"'; done
getopts is a shell builtin in dash
getopts is a shell builtin in ksh
getopts is a shell builtin in bash
getopts is a shell builtin in zsh
Jika Anda menggunakan skrip shell, Anda dapat dengan aman bergantung pada getopts
. Mungkin ada alasan lain untuk mendukung salah satunya, tetapi getopts
adalah standar .
Lihat juga:Mengapa tidak menggunakan "yang mana"? Lalu apa yang harus digunakan?
Saya juga lebih suka getopts
lebih dari getopt
untuk alasan berikut:
getopt
Kontra
- Utilitas eksternal
- Tidak dapat menangani string argumen kosong atau argumen dengan spasi kosong tersemat dalam versi tradisional
getopts
Pro
- Berfungsi di semua shell POSIX dan portabel
- Bekerja dengan baik dengan
-a -b
serta-ab