Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
Json 使用bash脚本解析curl中的变量_Json_Bash_Curl_Environment Variables_Echo - Fatal编程技术网

Json 使用bash脚本解析curl中的变量

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

嘿,我正在使用导管卷曲方法从post创建任务。当我使用硬编码值从终端运行时,它工作正常。但当我尝试使用变量执行它时,它会抛出一个错误:

脚本:

#!/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
新手的一般提示。此外,您还可以与许多文本编辑器一起使用,这些编辑器将自动发现类似这样的错误