Das hängt sehr von der Schale ab. Wenn wir uns nur die 4 Hauptschalenfamilien (Bourne, csh, rc, fish) ansehen:
Bourne Familie
Das ist die Bourne - Shell und alle seine Varianten und ksh
, bash
, ash
/ dash
, zsh
, yash
.
var=23
: das ist die korrekte Syntax für die Variablenzuweisung: ein Wort, das aus nicht zitierten Buchstaben, Ziffern oder Unterstrichen besteht, gefolgt von einem nicht zitierten Wort, =
das vor einem Befehlsargument steht (hier ist es für sich allein)
var =23
, der var
Befehl mit =23
dem Argument as (außer zsh
wenn =something
es sich um einen speziellen Operator handelt, der auf den Pfad des something
Befehls erweitert wird. Hier wird wahrscheinlich ein Fehler angezeigt, da 23
es sich wahrscheinlich nicht um einen gültigen Befehlsnamen handelt).
var= 23
: eine Zuweisung, var=
gefolgt von einem Befehlsnamen 23
. Das soll 23
mit var=
übergeben an seine Umgebung ( var
Umgebungsvariable mit einem leeren Wert) ausgeführt werden.
var = 23
, var
Gebiete mit =
und 23
als Argument. Versuchen Sie es echo = 23
zum Beispiel mit.
Csh Familie
csh
und tcsh
. Variablenzuweisungen gibt es mit der set var = value
Syntax für skalare Variablen, set var = (a b)
für Arrays, setenv var value
für Umgebungsvariablen, @ var=1+1
für Zuweisungen und für die arithmetische Auswertung.
So:
var=23
ruft nur den var=23
Befehl auf.
var =23
ruft den var
Befehl mit =23
als Argument auf.
var= 23
ruft den var=
Befehl mit 23
als Argument auf
var = 23
ruft den var
Befehl mit =
und 23
als Argumente auf.
RC Familie
Das ist rc
, es
und akanga
. In diesen Shells sind Variablen Arrays und Zuweisungen sind mit var = (foo bar)
, wobei var = foo
sie kurz für var = (foo)
(ein Array mit einem foo
Element) und var =
kurz für var = ()
(Array ohne Element, Verwendung var = ''
für ein Array mit einem leeren Element) sind.
In jedem Fall sind Leerzeichen (Leerzeichen oder Tabulatoren) =
zulässig und optional. In diesen Shells sind diese 4 Befehle äquivalent und äquivalent var = (23)
, um ein Array mit einem Element zuzuweisen 23
.
Fisch
In fish
ist die Variablenzuweisungssyntax set var value1 value2
. rc
Variablen sind wie in Arrays.
Das Verhalten ist also dasselbe wie bei csh
, mit der Ausnahme, dass fish
Sie keinen Befehl mit einem =
im Namen ausführen können . Wenn Sie ein solcher Befehl haben, müssen Sie es über aufrufen sh
zum Beispiel: sh -c 'exec weird===cmd'
.
Also alle var=23
und var= 23
geben Ihnen einen Fehler, var =23
rufen den var
Befehl mit =23
als Argument auf und var = 23
rufen den var
Befehl mit =
und 23
als Argument auf.