Ich habe ein Shell-Skript, das Folgendes enthält:
case $1 in
0 )
echo $1 = 0;
OUTPUT=3;;
1 )
echo $1 = 1;
OUTPUT=4;;
2 )
echo $1 = 2;
OUTPUT=4;;
esac
HID=$2;
BUNCH=16;
LR=.008;
Sind Semikolons im obigen Snippet völlig überflüssig? Und gibt es einen Grund für manche Leute, die doppelte Semikolons verwenden?
Es scheint, dass Semikolons nur ein Trennzeichen sind, etwas, das Sie anstelle einer neuen Zeile verwenden würden.
Nach
man bash
:Das
;
kann also ein Metazeichen oder ein Steuerungsoperator sein, während das;;
immer ein Steuerungsoperator ist (im Fallbefehl).In Ihrem speziellen Code
;
werden nicht alle am Ende der Zeile benötigt. Das;;
wird aber benötigt.quelle
;
und;;
? Ich bin mit der Analyse der BASH-Syntax nicht vertraut genug, um den praktischen Unterschied zwischen dem, was BASH als "Metazeichen" bezeichnet, und dem, was es als "Steuerungsoperator" bezeichnet, zu kennen.Im speziellen Fall von find werden
;
Befehle verwendet, die von -exec aufgerufen werden. Siehe die Antwort von @kenorb auf diese Frage .quelle
@ Opensourcebook-Amit
Zeilenumbrüche, die einem einzelnen Semikolon
;
am Terminal oder im Shell-Skript entsprechen.Siehe die folgenden Beispiele:
Am Terminal:
On Shell-Skript:
Ich bin jedoch nicht mit dem Kommentar einverstanden, der
&
einem Zeilenumbruch oder einem einzelnen Semikolon entspricht&
Befehle im Hintergrund auch als Befehlstrennzeichen ausführen, aber nicht als Semikolon oder Zeilenumbruch arbeiten.quelle
@ Ignacio Vazquez-Abrams
Eigentlich ist das nicht ganz richtig, einzelne Semikolons am Ende einer Zeile sind nicht überflüssig und definitiv nicht dasselbe wie neue Zeilen.
Aus dem Bash-Referenzhandbuch
Befehle , die von „neue Zeile“ getrennt werden könnten parallel ausgeführt , wenn Befehle , die durch Semikolons getrennt sind immer sequentiell ausgeführt
quelle
A sequence of one or more newlines may appear in a list to delimit commands, equivalent to a semicolon.
Was Sie also über das Semikolon zitiert haben, gilt auch für Zeilenumbrüche.&
nicht der kommt\n
. In einem Kommentar heißt es, er könne das Semikolon überspringen, da es anscheinend&
auch ein Befehlstrennzeichen wie;
und ist\n
.