Nutzung von :- (Doppelpunkt, Gedankenstrich) in der bash
Was ist der Sinn dieser Stil in der bash?
${PUBLIC_INTERFACE:-eth0}
Was ist der Zweck der :-
?
InformationsquelleAutor pahko | 2012-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
$PUBLIC_INTERFACE
existiert und nicht null ist, wieder seinen Wert, ansonsten zurück"eth0"
.Gibt es tatsächlich ein paar von diesen dokumentiert in der bash man-page:
InformationsquelleAutor Tim Pote
:-
wird in der${parameter:-word}
shell parameter expansion: wennparameter
ist null oder nicht gesetzt, es wird erweitert, um den Wert vonword
, ansonsten auf den Wert vonparameter
.Beispiel:
Diese und ähnliche Erweiterungen mit
:=
,:+
und:?
alle kommen in zwei Sorten: mit und ohne Doppelpunkt. Der Unterschied ist, dass der ausbau mit den Doppelpunkt einsetzt für "null oder unset", in der Erwägung, dass ohne den Dickdarm, es ist nur "null".Beobachten:
Wo ist das nützlich? Ein paar Beispiele:
Default-Werte
fc
ist das Ergebnis der Ausdehnung${FCEDIT:-${EDITOR:-vi}}
:$FCEDIT
wenn Sie definiert ist, oder sonst$EDITOR
wenn Sie definiert ist, oder sonstvi
.Einer Schleife in einem Skript, die sollten aus einer Datei Lesen, wenn eine angegeben ist, der als argument von standard-input, sonst könnte so Aussehen:
Bei der Verwendung
set -u
set -u
ist eine praktische Methode, um Kraft-Reiniger, scripting, indem er das Skript sterben, wenn er eine variable nicht belegt, als gefördert werden, indem zum Beispiel dieser Artikel (nicht, dass ich befürworte alles, was in es1). Wenn wir wollen, um zu überprüfen, ob eine bestimmte variable einen Wert hat, der mit[[ $var ]]
das Skript nun stirbt, wennvar
ist ausgeschaltet, auch wenn das legitim sein.Den Weg, um dieses ist mit
[[ ${var:- } ]]
statt, undset -u
sich nicht beklagen. (Dies ist im Grunde mit einem default Wert wieder, aber der ersetzte Wert ist die leere Zeichenkette, in diesem Fall.)Diese Erweiterungen sind nicht allein der Bash, durch die Art und Weise: die POSIX-shell-Spezifikation hat Sie alle, auch.
1 Siehe auch BashFAQ/112, Was sind die Vorteile und Nachteile der Verwendung von
set-u
(oderset-o nounset
)?InformationsquelleAutor Benjamin W.