Aber darum geht es nicht. Das Problem hat nichts mit case
und alles mit getopt
und set
davor zu tun .
Auch wenn Ihr Fall noch Block das gleiche prüft $1
, es ist nicht mehr von dort nur Ihre Befehlszeilenparameter zu bekommen. Der vorherige set
Befehl hat die ursprünglichen Parameter durch die Ausgabe des getopt- Programms ersetzt, was im Allgemeinen wie folgt aussieht -- "g"
.
Dieser zusätzliche --
Parameter wird von getopt eingefügt, um anzuzeigen, dass Optionen an diesem Punkt angehalten werden und Argumente ohne Option beginnen. Das ist der Zweck von getopt, die verschiedenen Arten von Befehlszeilenargumenten zu sortieren und zu trennen.
Wenn Sie diese Zeile hinzufügen, sollte dies offensichtlich werden:
while true; do + echo "arg 1 is '$1'" case "$1" in