bash函数内的curl为--data给出“选项未知”

bash函数内的curl为--data给出“选项未知”

我试图将 --data-raw 选项传递给 bash 函数内的curl,但出现选项未知错误。

function api_call () {
    local data="$5"
        echo $(curl -L -X $1 "https://api.datadoghq.com/api/v1/monitor/$2" \
          -H "Accept: application/json" \
          -H "Content-Type: application/json" \
          -H "DD-API-KEY: $3" \
          -H "DD-APPLICATION-KEY: $4" \
          $data)
}

我用它来称呼它

api_call "PUT" $monitor_id $DATADOG_API_KEY $DATADOG_APP_KEY $query

我的查询值为

query="--data-raw '{"query":"sum(last_1m):avg:application.health{application.health:healthy,c_name:nname,!source:service-full-1} by {source}.as_count() < 60"\}')"

但无论我输入什么数据,调用函数时它都不会被接受。如果我简单地做一个弯举,它就会按预期工作。

我缺少什么?谢谢!

答案1

正如评论中的每个人都指出的那样,shell 分割了变量,并且它不会作为命令运行。感谢@Kamil Maciorowski 提供了非常有用的链接,详细解释了这一点。 为什么我的 shell 脚本会因为空格或其他特殊字符而卡住? 我们如何运行存储在变量中的命令?

相关内容