2013-07-10 8 views
8

Ich versuche, einen Wert für eine Jenkins-Umgebungsvariable anzugeben (wie auf dem Bildschirm Jenkins verwalten -> System konfigurieren unter der Überschrift "Globale Eigenschaften") welches ein Leerzeichen enthält. Ich möchte diese Umgebungsvariable in einem Build-Shell-Build-Schritt verwenden. Die Option, die ich brauche in der Befehlszeile in dem Build-Schritt erscheinen soll:So geben Sie einen Wert für eine Jenkins-Umgebungsvariable an, die ein Leerzeichen enthält

--platform="Windows 7" 

Die Syntax mich auf der Kommandozeile verwende ist --platform=${VARIABLE_NAME}

Egal, wie ich versuche, es zu formatieren, Jenkins scheint um es so zu formatieren, dass es als zwei Werte behandelt wird. Ich habe versucht:

  • Windows 7
  • "Windows 7"
  • 'Windows 7'
  • Windows \ 7

Die entsprechenden Ergebnisse, wenn der Ausgang während der Execute Shell Erstellungsschritt wurden:

  • --platform = Windows 7
  • '--platform = "Windows' '7" '
  • '--platform =' \ '' Windows' '7' \ '''
  • --platform = Fenster/7

Ich habe auch versucht, meine Befehlszeilensyntax auf --platform='${VARIABLE_NAME}' sowie '--platform=${VARIABLE_NAME}' zu ändern, aber in jedem dieser Fälle wird die ${VARIABLE_NAME} überhaupt nicht aufgelöst und erscheint nur als ${VARIABLE_NAME} auf dem resultierenden Befehl.

Ich hoffe, es gibt einen Weg, um dies zu arbeiten. Irgendwelche Vorschläge werden am meisten geschätzt.

Antwort

6

Sie sollten im Abschnitt Globale Eigenschaften Leerzeichen ohne Sonderzeichen verwenden können.

Zum Beispiel habe ich eine Variable "THIS_VAL" auf den Wert "HAS SPACES" gesetzt.

Mein Test Build Job war die folgende:

#!/bin/bash 
set +v 
echo ${THIS_VAL} 
echo "${THIS_VAL}" 
echo $THIS_VAL 

und der Ausgang wurde

[workspace] $ /bin/bash /tmp/hudson8126983335734936805.sh 
HAS SPACES 
HAS SPACES 
HAS SPACES 
Finished: SUCCESS 

Ich denke, was Sie tun müssen, ist mit dem folgenden Befehl:

--platform="${VARIABLE_NAME}" 

HINWEIS: Verwenden Sie doppelte Zitate, nicht einzelne q uotes. Durch Verwendung von einfachen Anführungszeichen wird der Inhalt innerhalb des Anführungszeichen-Literals gesetzt, was bedeutet, dass alle Variablen so gedruckt werden, wie sie sind, und nicht in den tatsächlichen Wert zerlegt werden. Daher wird '$ {VARIABLE_NAME}' so gedruckt, wie es ist, nicht in "Windows 7" geparst.


EDIT: Basierend auf @BobSilverberg Kommentar unten, verwenden Sie die folgenden Schritte aus:

--platform="$VARIABLE_NAME" 

Hinweis: keine geschweiften Klammern.

+1

Danke Sagar. Aus all den Kombinationen, die ich probiert habe, war das keiner. Es hat am Ende funktioniert, aber ich musste '--platform =" $ VARIABLE_NAME "' angeben. Wenn ich '--platform =" $ {VARIABLE_NAME} "' verwendet habe, hat es einige zusätzliche Anführungszeichen eingefügt, also war das Ergebnis '' --platform = '\' '' Windows 7 '\' '' '. – BobSilverberg

+0

Großartig! Ich werde die Korrektur in der Antwort veröffentlichen. Vielen Dank! – Sagar

Verwandte Themen