Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中使用变量执行curl命令_Bash_Unix_Curl_Ansible Awx - Fatal编程技术网

在bash中使用变量执行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\”

我在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\”:“$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”