Ausführung von
%Vor%Gibt mir
%Vor%Ist es möglich, Systemeigenschaften mit einem Punkt im Inneren zu haben? Wenn ja, wie geht das?
Wie andere schon gesagt haben, erlaubt bash das nicht, also müssen Sie Ihre bevorzugte Skriptsprache dafür verwenden. Zum Beispiel in Perl:
%Vor% Dadurch wird eine Subshell-Bash mit der Umgebungsvariablen property.name
gestartet, aber Sie können immer noch nicht auf diese Umgebungsvariable von bash zugreifen (obwohl Ihr Programm sie sehen kann).
Bearbeiten : @MarkEdgar kommentierte, dass der Befehl env auch funktioniert:
%Vor%Wie üblich benötigen Sie nur Anführungszeichen, wenn Sie Sonderzeichen vor der Shell schützen müssen oder Leerzeichen in den Eigenschaftsnamen oder -wert aufnehmen möchten.
Ich habe einen besseren Teil dieses Nachmittags damit verbracht, herauszufinden, wie ich auf eine von Jenkins gesetzte Eigenschaft zugreifen kann (um einen Jobparameter zu übergeben, verwendet jenkins das Eigenschaftsformat mit einem Punkt) - das war ein guter Hinweis von Adrian und ja, es funktioniert zum Lesen Eigenschaften im Skript auch. Ich wusste nicht, was ich tun sollte, aber dann habe ich es versucht:
%Vor%Das hat eigentlich ganz gut funktioniert. Aber natürlich funktioniert das in einer Shell, die bereits mit der in der Umgebung gesetzten Eigenschaft gestartet wurde, d. H. In Adrians Beispiel könnte dies in einem Skript funktionieren, das von einer Bash-Instanz gestartet wurde, die in einem von ihm bereitgestellten Perl-Beispiel aufgerufen wurde. Es wäre nicht, wenn dieses Perl-Sniplet nur direkt nach seinem Perl-Beispiel in die selbe Shell eingefügt würde.
Wenigstens habe ich heute Nachmittag etwas gelernt, also ist die ganze Zeit keine Verschwendung.
Wenn Sie diese Eigenschaften zum Ausführen einer Anwendung exportieren, können einige Programme das Festlegen der Systemeigenschaft als Option unterstützen und .
im Eigenschaftsnamen zulassen.
In der Java-Welt unterstützen die meisten Tools die Einstellung der Systemeigenschaft durch -D
option, z. Sie können die Systemeigenschaft mit einem Punkt wie diesem -Dproperty.name=property.value
festlegen.