在bash中使用变量执行curl命令
我在bash脚本中使用awxcurl作为更新模板。不知怎的,这个curl命令无法运行在bash中使用变量执行curl命令,bash,unix,curl,ansible-awx,Bash,Unix,Curl,Ansible Awx,我在bash脚本中使用awxcurl作为更新模板。不知怎的,这个curl命令无法运行 curl——不安全的-v-X补丁https://somedomain.corp.com/api/v2/job_templates/\“$test\u 2\u template\”/-H'授权:基本密钥=='-H'内容类型:应用程序/json'-d'{“额外变量”:“{”模块名称“:\”$模块名称“,“$env\”:“$appenv\”,“$host\u组名称”:“$host\u组名称”,“$rolename\”
curl——不安全的-v-X补丁https://somedomain.corp.com/api/v2/job_templates/\“$test\u 2\u template\”/-H'授权:基本密钥=='-H'内容类型:应用程序/json'-d'{“额外变量”:“{”模块名称“:\”$模块名称“,“$env\”:“$appenv\”,“$host\u组名称”:“$host\u组名称”,“$rolename\”:“$rolename\”,“应用程序工件url\:”$app\u artifact\u url\“}”
看起来在通过bash将变量传递给curl命令时出现了一些问题
但是,如果我从终端运行这个,它工作正常
curl——不安全的-v-X补丁https://somedomain.com/api/v2/job_templates/279/ -H'授权:基本密钥=='-H'内容类型:应用程序/json'-d'{“额外变量”:“{”模块名称\“:\“myservice\”,“env\”:“test\”,“主机组名称\“:“env2\”,“rolename\”:“myservice\”,“artifact\u version\”:“2.1.0-SNAPSHOT\”}“
请提供一些解决方案。不能在单个带引号的字符串中替换变量 对于像这样的非常长的命令,将它们分解为若干部分对于可读性和可维护性是至关重要的:
data=$(printf\
“{”额外变量“:“{\”模块名称“:\%s\”,“\”环境“:\%s\”,“\”主机组名称“:\%s\”,“\”角色名称“:\%s\”,“\”应用程序工件“:\%s\”}”\
“$module\u name”“$appenv”“$host\u group\u name”“$rolename”“$app\u artifact\u url”
)
旋度=(
--不安全
-五
-X补丁
-H'授权:基本密钥=='
-H'内容类型:应用程序/json'
-d“$data”
)
url=”https://somedomain.example.com/api/v2/job_templates/$test_2_模板/”
curl“${curl_args[@]}”“$url”