使用 curl 调用 API 不起作用:curl http://server/api?k1=v1&k2=v2

Calling an API with curl does not work: curl http://server/api?k1=v1&k2=v2

我想从 BASH 脚本中调用 API。 当我可以为前两个链接调用 API 时,它可以工作,但对于最后两个链接我没有得到相同的结果(它们在浏览器中工作)

echo "Kuma null"
curl --silent https://status.lol.net/api/push/UGUH?msg=OK > /dev/null
sleep 5
echo "Kuma not null"
curl --silent https://status.lol.net/api/push/UGUH?msg=OK
sleep 5
echo "Pi-hole null"
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54 > /dev/null
sleep 5
echo "Pi-hole not null"
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54
sleep 5

输出:

Kuma null
Kuma not null
{"ok":true}Pi-hole null
[]Pi-hole not null
[]

我需要更改什么?

curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54

您需要像这样引用 URL:

curl --silent "http://192.168.0.22:5555/admin/api.php?disable=600&auth=54"

否则会被解释为

curl --silent http://192.168.0.22:5555/admin/api.php?disable=600 & auth=54
#                                                               ^^^^^^^^^^