Json 使用bash脚本解析curl中的变量
嘿,我正在使用导管卷曲方法从post创建任务。当我使用硬编码值从终端运行时,它工作正常。但当我尝试使用变量执行它时,它会抛出一个错误: 脚本:Json 使用bash脚本解析curl中的变量,json,bash,curl,environment-variables,echo,Json,Bash,Curl,Environment Variables,Echo,嘿,我正在使用导管卷曲方法从post创建任务。当我使用硬编码值从终端运行时,它工作正常。但当我尝试使用变量执行它时,它会抛出一个错误: 脚本: #!/bin/bash echo "$1" echo "$2" echo "$3" echo "$4" echo "$5" echo '{ "transactions": [ { "type": "title", "value": "$1" }, { "type": "description
#!/bin/bash
echo "$1"
echo "$2"
echo "$3"
echo "$4"
echo "$5"
echo '{
"transactions": [
{
"type": "title",
"value": "$1"
},
{
"type": "description",
"value": "$2"
},
{
"type": "status",
"value": "$3"
},
{
"type": "priority",
"value": "$4"
},
{
"type": "owner",
"value": "$5"
}
]
}' | arc call-conduit --conduit-uri https://mydomain.phacility.com/ --conduit-token mytoken maniphest.edit
执行:
./test.sh "test003 ticket from api post" "for testing" "open" "high" "ahsan"
输出:
test003 ticket from api post
for testing
open
high
ahsan
{"error":"ERR-CONDUIT-CORE","errorMessage":"ERR-CONDUIT-CORE: Validation errors:\n - User \"$5\" is not a valid user.\n - Task priority \"$4\" is not a valid task priority. Use a priority keyword to choose a task priority: unbreak, very, high, kinda, triage, normal, low, wish.","response":null}
正如您在错误中看到的,它将$4和$5作为值而不是变量读取。我无法理解如何在这些参数中使用$variables作为输入。您在最后一个
echo
to周围使用单引号,以便可以在JSON中使用双引号,但这会导致echo
打印字符串而不展开任何内容。您需要对字符串使用双引号,因此必须转义其中的双引号
将最后一个回波替换为以下内容:
echo "{
\"transactions\": [
{
\"type\": \"title\",
\"value\": \"$1\"
},
{
\"type\": \"description\",
\"value\": \"$2\"
},
{
\"type\": \"status\",
\"value\": \"$3\"
},
{
\"type\": \"priority\",
\"value\": \"$4\"
},
{
\"type\": \"owner\",
\"value\": \"$5\"
}
]
}"
它会起作用的。为了避免类似的问题,您可以检查并获取一些针对bash
新手的一般提示。此外,您还可以与许多文本编辑器一起使用,这些编辑器将自动发现类似这样的错误