首页 > 解决方案 > 我如何在 bash 变量中保护 curl 结果

问题描述

当我 curl -d "param1=value1&param2=value2" -X POST https://xxx.xxxx.de/xx/xx.php 2>/dev/null在普通命令行上运行命令时,我得到了请求的结果{"success":false,"cause":"Token needed"}

我在 bash 脚本上需要这个结果,但是当我尝试运行它时

curl = "$(curl -d "param1=value1&param2=value2" -X POST https://xxx.xxxx.de/xx/xx.php 2>/dev/null)"
echo $curl

我没有收到请求的结果 我收到了这个

[1/2]: "success":false --> <stdout>
--_curl_--"success":false
curl: (3) URL using bad/illegal format or missing URL

[2/2]: "cause":"Token needed" --> <stdout>
--_curl_--"cause":"Token needed"
curl: (3) URL using bad/illegal format or missing URL

我如何在我的 bash 脚本中使用正确的结果?

标签: bashcurl

解决方案


您的命令不是变量赋值,它尝试curl使用参数=和命令替换的输出执行。删除前后的空格字符=,您可以省略命令替换周围的引号(这是不需要引号的少数情况之一)。

curl=$(curl -d "param1=value1&param2=value2" -X POST https://xxx.xxxx.de/xx/xx.php 2>/dev/null)
echo "$curl"

推荐阅读