Ich verstehe den Doppelpunktoperator in bash, der sich wie eine Null verhält , und ich weiß, dass er sowohl bei der Parametererweiterung als auch auf andere Weise verwendet wird, aber kann jemand dies erklären:
: ${SOMETHING='value'}
Aus Experimenten weiß ich, dass dies die Umgebungsvariable $SOMETHING
auf setzt, 'value'
aber warum?
"Nur weil es so ist" ist eine gültige Antwort, aber bitte verweisen Sie mich auf die Dokumentation dafür (die ich anscheinend nicht finden kann), oder ein richtiger Name für diese Verwendung wäre nützlich. Ich hoffe jedoch, dass es eine aufschlussreichere Erklärung gibt.
:
integrierte System in Bourne Shell und Ksh sowie in Bash vorhanden ist.Antworten:
Der Ausdruck
${SOMETHING='value'}
setzt ETWAS auf,value
wenn es nicht bereits gesetzt ist. Dies ist in vielen Situationen ein nützlicher Operator. Es wird jedoch auch der zugewiesene Wert zurückgegeben, wenn Sie also einfach ausgeführt haben${SOMETHING='value'}
dann würde Ihre Shell versuchen, den Befehl aufzurufen
value
. Dies kann oder kann nicht etwas Unerwünschtes tun; Zumindest würde die Meldung "Wert: Befehl nicht gefunden" ausgegeben.Um dies zu vermeiden, können Sie das No-Op verwenden
:
, das sein Argument auswertet und es dann wegwirft, anstatt es auszuführen. Dies ist hier dokumentiert .quelle
:
eingebaute Befehl ist hier dokumentiert . Es ist auch ein POSIX-Standard .=
) verwendet den Standardwert, wenn der Parameter lautetunset
. Letzteres (:=
) verwendet die Standardeinstellung, wenn der Parameternull
oderunset
Hier erklärt: http://tldp.org/LDP/abs/html/parameter-substitution.html
quelle