Wenn ich versuche, es in sh auszuführen a;;b
, erhalte ich diesen Fehler:
sh: <number>: Syntax error: ";;" unexpected
Wenn ich es versuche, a;;;b
erhalte ich denselben Fehler, nicht ;;;
anstelle von ;;
, also denke ich, dass das ;;
etwas bedeutet, obwohl ich nicht weiß, was es bedeutet.
Hier ist ein Beispiel:
$ echo A;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A;;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A; ;echo B
sh: 1: Syntax error: ";" unexpected
Hier können Sie sehen, dass der Fehler anders ist, wenn ich ; ;
stattdessen verwende. ;;
Dies hängt damit zusammen, dass ich ;
zuvor ohne Befehl verwendet habe. ;;
Es scheint sich um einen anderen Operator zu handeln, obwohl ich nicht weiß, worauf er sich bezieht.
Antwort1
;;
trennt Anweisungen in einer case
...- esac
Konstruktion in POSIX-Shells:
case foo in (a) cmd1; cmd2 ;; (b) cmd3; cmd4; esac
Um mehr über einen Befehl zu erfahren, können Sie ausführen man that-command
. Wenn Ihr Pager ist less
, können Sie innerhalb der Manpage suchen, indem Sie drücken /.
Hier würden Sie ausführen man sh
und nach suchen ;;
. Einige Shells unterstützen andere Operatoren zum Trennen case
von Anweisungen (wie ;&
in ksh93
/ zsh
/ bash
/ mksh
, &|
in zsh
/ mksh
, ;;&
in bash
).