Zuweisung von Variablen mit Leerzeichen nach dem (=) Zeichen?

8

In Bash wird das Zuweisen von Werten zu Variablen mit T=content durchgeführt, ohne Leerzeichen vor oder nach dem Gleichheitszeichen.

Trotzdem habe ich folgendes in einem Shell-Skript PWD= /bin/pwd gesehen, das ein Leerzeichen auf der rechten Seite des Gleichheitszeichens enthält.

Was hat der Zweck davon ein Leerzeichen?

    
kaneda 17.11.2014, 11:45
quelle

3 Antworten

7

Im Beispiel PWD= /bin/pwd wird die Variable PWD auf den leeren String gesetzt, bevor der Befehl /bin/pwd ausgeführt wird. Die Änderung wird nur für diese Zeile wirksam.

Dies kann nützlich sein, um eine temporäre Änderung an einer Variablen vorzunehmen, um einen Befehl auszuführen, ohne den ursprünglichen Wert zu beeinflussen. Ein anderes Beispiel wäre die Verwendung von read , um eine andere IFS :

zu setzen %Vor%

Dies setzt das Feldtrennzeichen auf ein Komma, so dass a , b und c korrekt gelesen werden. Nach dieser Zeile wird IFS auf den Standardwert zurückgesetzt, so dass der Rest des Skripts nicht betroffen ist.

Vielleicht wird auf einigen Systemen die Ausgabe des Befehls pwd durch den Wert der Variablen PWD beeinflusst, wodurch verhindert wird, dass Probleme, die durch PWD verursacht werden, an anderer Stelle überschrieben werden.

    
Tom Fenech 17.11.2014, 11:51
quelle
2

Wir sprechen hier nicht über zwei verschiedene Dinge.

Wenn wir

hätten %Vor%

Wir würden /bin/pwd auf PWD zuweisen.

Aber

%Vor%

bedeutet, dass wir /bin/pwd mit PWD auf den leeren String setzen. Diese Zuweisung betrifft nur den Unterprozess, nicht den aktuellen.

    
glglgl 17.11.2014 11:52
quelle
2
%Vor%

Diese Syntax weist der Variablen PWD für die Dauer des Befehls pwd den leeren Wert zu.

%Vor%

Dies weist PWD für den Rest des Skripts zu.

%Vor%

Dies weist PWD nur für die Dauer des Befehls pwd zu; Der echo gibt den Wert wieder, der vor und nach dem pwd Aufruf aktiv war.

%Vor%

Dies weist einfach den leeren Wert PWD zu.

    
tripleee 17.11.2014 11:50
quelle

Tags und Links