Ich möchte eine Variable korrekt exportieren. Dazu muss ich verschiedene Syntaxvarianten kennen. Ich habe die folgenden Mechanismen zum Exportieren einer Variable gesehen. In diesem Fall verwende ich .bashrc
:
export MY_VARIABLE=$USER/.gradle
--$export MY_VARIABLE="$USER/.gradle"
--Zitateexport MY_VARIABLE=USER/.gradle
--Nein $export $MY_VARIABLE=$USER/.gradle
--Alle $
Welche Bedeutung hat in diesen Fällen das $-Zeichen? Warum wird es manchmal verwendet und manchmal nicht?
Brauchen wir Anführungszeichen, wenn der Pfad keine Leerzeichen enthält? Was passiert, wenn der Pfad in $USER Leerzeichen enthält?
Warum steht auf der linken Seite des Exports kein $?
Antwort1
Token wie export
, declare
, und dergleichen verwenden explizit Variablennamen als Parameter. $
kann im Allgemeinen als „der Wert von“ verstanden werden, $variable
bedeutet also „der Wert von variable
“. Nehmen Sie diesen Befehlssatz:
foo=bar
bar=baz
export $foo
( echo "$foo" )
Was hier passieren wird, ist, dass Sie eine leere Ausgabezeile erhalten. Das liegt daran, dass im export
Befehl $foo
tatsächlich bar
(der Wert von foo
) ist, also ist der tatsächlich ausgeführte Befehl export bar
. Da foo
nicht exportiert wird, ist sein Standardwert null. Wenn die letzte Zeile jedoch wäre:
( echo "$bar" )
Sie würden die Ausgabe von erhalten baz
, deren Wert in die nachfolgenden Unter-Shells eingefügt bar
wurde export
.
Es ist im Allgemeinen eine sehr gute Idee, schwache Anführungszeichen (" ") zu verwenden "
umalleIhrer Variablenreferenzen, aus Gründen, die den von Ihnen genannten umfassen, aber nicht darauf beschränkt sind (z. B. Leerzeichen in Dateinamen und Pfaden). Wenn wir beispielsweise Folgendes hätten:
if [ $letter == a ]; then echo "ayyyy"; fi
aber letter
leer wären, würde die Shell versuchen,
if [ == a ]
das ist ein Syntaxfehler, aber mit Anführungszeichen:
if [ "$letter" == a ];
wird
if [ "" == a ];
was gültig ist.