我知道有一些问题可以解答如何执行此操作,但是当我将变量用双引号括起来时,我仍然无法使我的方案正常工作。
我正在执行curl请求以获取Jenkins中的有效crumb,以便我可以通过POST请求执行作业。
所以目前我收到Password Invalid
之类的回复,因为变量${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)')
如果我对USER_TOKEN
进行硬编码,那么这将有效,但我显然想避免这种情况。
如何执行此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 :(得分:2)
您需要双引号包含双引号的字符串。这是一种方式:
.dll
答案 1 :(得分:0)
以这种方式试试
CRUMB=$(curl -s "http://jenkins:"${USER_TOKEN}"@localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField, \":\",//crumb)")
如果你想在你的字符串中扩展一个变量,那么整个字符串必须用双引号括起来。单引号可防止任何bash评估。此外,您必须转义整个字符串中的任何双引号。