In KSH, in doppelten Klammern, die =
und ==
Operatoren sind für Muster übereinstimmt, gefunden [[ string = pattern ]]
[1]
Diese sind Expansionsmuster shell Pfadname. ?
wird mit jedem einzelnen Zeichen übereinstimmen.
Also, was Sie testen, ist, wenn $1
einen Bindestrich gefolgt von einem einzelnen Zeichen entspricht. Mit anderen Worten, sieht der erste Positionsparameter wie eine Optionsfolge aus?
[1] - Zur Überprüfung der Zeichenkettengleichheit enthält Ihr Muster entweder keine speziellen Globbing-Zeichen oder solche Zeichen sind in Anführungszeichen oder Escapezeichen.
IMO, eine robustere Art und Weise Option Parsing zu tun ist, mit dem getopts
builtin:
while getopts :abc opt; do
case $opt in
a) a1=alligator ;;
b) a2=bear ;;
c) a3=cougar ;;
:) print -u2 "error: missing required argument for -$OPTARG" ;;
?) print -u2 "unknown option: -$OPTARG" ;;
esac
done
shift $((OPTIND - 1))
Vielen Dank Herr !! Das hat mir sehr geholfen und +1 für Ihre detaillierte Erklärung und einen alternativen Ansatz gegeben. – dev