2013-02-22 13 views

Antwort

14

Wie andere gesagt haben, bash es nicht zulässt, dass so können Sie Ihre Lieblings-Skriptsprache verwenden müssen werde, es zu tun. Zum Beispiel in Perl:

perl -e '$ENV{"property.name"} = "property.value"; system "bash"' 

Dies wird ein Sub-Shell bash mit dem property.name Umgebungsvariable in Brand, aber man kann immer noch nicht, dass das Umgebungsvariable von bash zugreifen (auch wenn Ihr Programm wird in der Lage sein, es zu sehen) .

bearbeiten: @MarkEdgar kommentierte, dass die env Befehl arbeiten:

env 'property.name=property.value' bash # start a subshell, or 
env 'property.name=property.value' command arg1 arg2 ... # Run your command 

Wie üblich, nur Anführungszeichen benötigen, wenn Sie von der Shell Sonderzeichen schützen müssen oder wollen Räume in der einzubeziehen Name oder Wert der Eigenschaft

+1

Arbeitet nicht env? –

+0

@MarkEdgar: Ja, 'env' funktioniert. Ich wusste einfach nicht, dass es verwendet werden könnte, Umgebungsvariablen * zu setzen, ich habe es nur benutzt, um * Umgebungsvariablen * anzuzeigen. –

3

Ich verbrachte einen besseren Teil dieses Nachmittags mit dem Versuch herauszufinden, wie man auf eine von Jenkins gesetzte Eigenschaft zugreifen kann (um einen Jobparameter zu übergeben jenkins verwendet ein Eigenschaftsformat mit einem Punkt) - das war ein guter Hinweis von Adrian und ja, es funktioniert Lesen von Eigenschaften im Skript auch. Ich war ratlos was zu tun, aber dann habe ich versucht:

Dies funktionierte eigentlich ziemlich gut. 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 dieselbe Shell eingefügt würde.

Wenigstens habe ich heute Nachmittag etwas gelernt, also ist die ganze Zeit keine Verschwendung.

2

Wenn Sie diese Eigenschaften zum Ausführen einer Anwendung exportieren, können einige Programme die Systemeigenschaft als Option unterstützen und . im Namen der Eigenschaft zulassen.

In der Java-Welt unterstützen die meisten Tools die Einstellung der Systemeigenschaft durch die Option -D, z. Sie können die Systemeigenschaft mit einem Punkt wie diesem -Dproperty.name=property.value einstellen.

+0

Ich musste env Variable für Java-Server festlegen, so für mich arbeitete exportieren JAVA_OPTS = "$ JAVA_OPTS -Dressing.profiles.active = somevalue" – divideByZero

Verwandte Themen