which
es la herramienta equivocada. getopts
suele ser también un incorporado:
Desde getopts
afecta el entorno de ejecución de shell actual, generalmente se proporciona como un shell incorporado normal.
~ 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
Si está utilizando un script de shell, puede confiar con seguridad en getopts
. Puede haber otras razones para favorecer uno u otro, pero getopts
es estándar .
Ver también:¿Por qué no usar "cuál"? ¿Qué usar entonces?
Yo también preferiría getopts
más de getopt
por las siguientes razones:
getopt
Contras
- Utilidad externa
- No se pueden manejar cadenas de argumentos vacías o argumentos con espacios en blanco incrustados en la versión tradicional
getopts
Ventajas
- Funciona en cualquier shell POSIX y es portátil
- Funciona bien con
-a -b
así como-ab