which
ist das falsche Werkzeug. getopts
ist normalerweise auch eingebaut:
Seit getopts
Auswirkungen auf die aktuelle Shell-Ausführungsumgebung haben, wird es im Allgemeinen als Shell-Regular-Built-In bereitgestellt.
~ 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
Wenn Sie ein Shell-Skript verwenden, können Sie sich getrost auf getopts
verlassen . Es mag andere Gründe geben, das eine oder andere zu bevorzugen, aber getopts
ist Standard .
Siehe auch:Warum nicht "what" verwenden? Was dann verwenden?
Ich würde getopts
auch bevorzugen über getopt
aus folgenden Gründen:
getopt
Nachteile
- Externes Dienstprogramm
- Kann keine leere Argumentzeichenfolge oder Argumente mit eingebetteten Leerzeichen in der traditionellen Version verarbeiten
getopts
Vorteile
- Funktioniert in jeder POSIX-Shell und ist portabel
- Funktioniert gut mit
-a -b
sowie-ab