编辑:
我设法使其与
一起使用response=$(
curl -k -X PUT -d "$marathon_payload" --write-out %{http_code} --silent --output "$tmp"\
-H "Authorization: token=$dcos_token" -H "$header_content_type" $app_id_url
)
单引号引起了问题。旋转了几次,但一切都很好。
MALAL:如果您没有对整件事进行评估,那么值中的引号并不重要,除非您正确地引用了该值,我应该早就知道了。奥卡姆再次获胜。
结束编辑
我正在使用curl
启动Mesosphere微服务部署,但是如果不使用eval
它将无法成功。自从我最近继承了这段代码以来,我一直试图将eval
清除掉,只是出于一种习惯,但这使我沮丧。
该脚本使用以下命令启动部署
response=$(
eval curl -k -X PUT -d "'$marathon_payload'" --write-out %{http_code} --silent --output $tmp\
-H "'Authorization: token=$dcos_token'" -H "'$header_content_type'" $app_id_url
)
如果它得到200或201,它将循环curl
以有效地屏幕抓取部署页面,直到请求消失。
chkDeploy() { rm -f $tmp;
eval curl -k -X GET --silent --write-out %{http_code} --silent --output $tmp\
-H "'Authorization: token=$dcos_token'" -H "'$header_content_type'" $deployments_url
}
response=$( chkDeploy )
$dcos_token
是base64编码的字符串。
然后,它通过另一个curl
循环检查服务到信息页面,以便可以验证版本号。 此功能正常运行,没有评估。
chkCode() {
curl -k -X GET --write-out %{http_code} --silent --output $tmp $info_url;
}
response=$( chkCode )
前两个返回401,身份验证失败。 我猜auth令牌引用已关闭。
答案 0 :(得分:0)
这里没有理由使用eval
;您只需要正确引用-H
的参数即可。
response=$(
curl -k -X PUT -d "$marathon_payload" \
--write-out %{http_code} \
--silent --output "$tmp" \
-H "Authorization: token=$dcos_token" \
-H "$header_content_type" "$app_id_url"
)