2016-09-26 26 views
3

私は、これを行う方法についていくつかの質問があることを知っていますが、二重引用符で変数をラップするときに私のシナリオが機能するように見えます。bashスクリプト内で環境変数を使用する

私は、Jenkinsで有効なクラムを取得するためにcurlリクエストを実行しています。そのため、POSTリクエストを介してジョブを実行できます。変数${USER_TOKEN}が、私はUSER_TOKENをハードコードした場合、これは動作します

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)') 

を認めたが、私は明らかにそれを避けたかったされていないとして、私はPassword Invalidのような応答を得る現時点ではそう

このcurlコマンドを実行して、USER_TOKENを渡すにはどうすればよいですか?

アップデート

私は二重引用符で${USER_TOKEN}を囲むと、私はまだ同じエラーを取得します。

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

そして、私は二重引用符でcurl要求を囲む場合、私はあなたが二重引用符を含む文字列を引用倍にする必要がある

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

なぜあなたはそれをダブルクォートできませんか? 'curl -s 'http:// jenkins:'" $ {USER_TOKEN} "'@ localhost'? – 123

答えて

2

を取得します。これは、1つの方法です:あなたは、文字列全体よりも、あなたの文字列に展開変数は、二重引用符で囲まする必要がある場合

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

ありがとうございました – Richlewis

0

は、このよう

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

それを試してみてください。一重引用符はbash評価を防ぎます。また、文字列全体の二重引用符をエスケープする必要があります。

関連する問題