which
è lo strumento sbagliato. getopts
di solito è anche un builtin:
Dal
getopts
influisce sull'ambiente di esecuzione della shell corrente, è generalmente fornito come componente integrato regolare della 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
Se stai usando uno script di shell, puoi tranquillamente fare affidamento su getopts
. Potrebbero esserci altri motivi per favorire l'uno o l'altro, ma getopts
è standard .
Vedi anche:Perché non usare "quale"? Cosa usare allora?
Anch'io preferirei getopts
oltre getopt
per i seguenti motivi:
getopt
Contro
- Utilità esterna
- Impossibile gestire stringhe di argomenti vuote o argomenti con spazi bianchi incorporati nella versione tradizionale
getopts
Pro
- Funziona in qualsiasi shell POSIX ed è portatile
- Funziona bene con
-a -b
così come-ab