which
je špatný nástroj. getopts
je obvykle také vestavěný:
Od
getopts
ovlivň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 -b
stejně jako-ab