which je špatný nástroj. getopts je obvykle také vestavěný:
Od
getoptsovlivňuje aktuální prostředí spouštění shellu, je obecně poskytován jako běžný vestavěný 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
Pokud používáte shellový skript, můžete se bezpečně spolehnout na getopts . Mohou existovat jiné důvody pro upřednostnění jednoho nebo druhého, ale getopts je standardní .
Viz také:Proč nepoužít „který“? Co tedy použít?
Také bych preferoval getopts více než getopt z následujících důvodů:
getopt Nevýhody
- Externí nástroj
- V tradiční verzi nelze zpracovat prázdný řetězec argumentů nebo argumenty s vloženými mezerami
getopts Pro
- Funguje v jakémkoli prostředí POSIX a je přenosný
- Funguje dobře s
-a -bstejně jako-ab