2016-09-26 4 views
3

Ich weiß, dass es ein paar Fragen mit Antworten darauf gibt, wie das geht, aber ich kann mein Szenario immer noch nicht zum Arbeiten bringen, wenn ich meine Variable in Anführungszeichen hülle.Verwenden von Umgebungsvariablen innerhalb eines Bash-Skripts Jenkins

Ich führe eine Curl-Anfrage aus, um einen gültigen Crumb in Jenkins zu erhalten, damit ich dann einen Job über eine POST-Anfrage ausführen kann.

Also im Moment bekomme ich Antwort wie Password Invalid als Variable ${USER_TOKEN} nicht

erkannt
echo "The USER TOKEN is " ${USER_TOKEN} # This outputs 123456789 for example 
CRUMB=$(curl -s 'http://jenkins:${USER_TOKEN}@localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField, ":",//crumb)') 

Wenn ich hart codieren die USER_TOKEN dann wird dies funktionieren, aber ich wollte offensichtlich das vermeiden.

Wie kann ich diesen curl Befehl ausführen und die USER_TOKEN übergeben?

Updates

Wenn ich ${USER_TOKEN} mit doppelten Anführungszeichen umgeben ich immer noch den gleichen Fehler.

CRUMB=$(curl -s 'http://jenkins:"${USER_TOKEN}"@localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField, ":",//crumb)') 

Und wenn ich die curl Anfrage mit doppelten Anführungszeichen umgeben bekomme ich

Invalid Xpath expression, contact(//crumbRequestField,:,//crumb) 
Unexpected ':' 
+0

Warum können Sie es nicht doppelt angeben? 'curl -s 'http: // jenkins:'" $ {USER_TOKEN} "'@ localhost'? – 123

Antwort

2

Sie benötigen einen String in doppelten Anführungszeichen, die doppelte Anführungszeichen enthält. Dies ist ein Weg:

CRUMB=$(curl -s "http://jenkins:${USER_TOKEN}@localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField, "'":"'",//crumb)") 
+0

Danke, das war es – Richlewis

0

Versuchen Sie es auf diese Weise

CRUMB=$(curl -s "http://jenkins:"${USER_TOKEN}"@localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField, \":\",//crumb)") 

Wenn Sie eine Variable erweitert in der Zeichenfolge als die gesamte Zeichenfolge wollen, müssen mit doppelten Anführungszeichen umgeben werden. Einfache Anführungszeichen verhindern jede Bash-Bewertung. Außerdem müssen Sie doppelte Anführungszeichen in der gesamten Zeichenfolge entfernen.

Verwandte Themen