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 -bsowie-ab