Übergeben von Variablen an Skript

Übergeben von Variablen an Skript

Was ist der Unterschied zwischen:

./script.sh "$VARIABLE"

Und

./script.sh ${VARIABLE}

Gibt es irgendwelche?

Antwort1

$VARIABLEund ${VARIABLE}sind praktisch gleich, wenn es sich um eigenständige Wörter handelt. Beachten Sie jedoch das folgende Beispiel, insbesondere in einem Skript

VARIABLE=USER
echo $VARIABLE

Sie erhalten eine Ausgabe

USER

aber wenn Sie tippen

echo $VARIABLE1

erwartet zu bekommen

USER1

Sie erhalten nichts, da keine Variable wie VARIABLE1definiert vorhanden ist

Aber wenn Sie verwenden

echo ${VARIABLE}1

Sie erhalten die erwartete USER1Ausgabe.

Antwort2

von Shawn J. Goff:$VAR vs. ${VAR} und zitieren oder nicht zitieren

VAR=$VAR1 ist eine vereinfachte Version von VAR=${VAR1}. Die zweite Version kann Dinge, die die erste nicht kann, z. B. einen Array-Index referenzieren (nicht portierbar) oder einen Teilstring entfernen (POSIX-portabel). Weitere Informationen finden Sie im Abschnitt „Mehr zu Variablen“ des Bash-Handbuchs für Anfänger und in der Parametererweiterung in der POSIX-Spezifikation.

Es ist eine gute Idee, eine Variable in Anführungszeichen zu setzen, wie in rm -- "$VAR1" oder rm -- "${VAR}". Dadurch wird der Inhalt der Variable zu einer atomaren Einheit. Wenn der Variablenwert Leerzeichen (also Zeichen in der speziellen Variable $IFS, standardmäßig Leerzeichen) oder Globbing-Zeichen enthält und Sie ihn nicht in Anführungszeichen setzen, wird jedes Wort für die Dateinamengenerierung (Globbing) berücksichtigt, dessen Erweiterung so viele Argumente wie möglich für das ergibt, was Sie gerade tun.

verwandte Informationen