122

我正在尝试在 bash 中使用 curl 来下载网页,但&URL 中的符号没有被解释为我想要的字符。关于如何让 bash 相信该符号&只是一个无聊的角色并且没有什么特别之处的任何想法?

4

7 回答 7

150

将整个 URL 放在双引号内应该可以解决您的问题。

于 2012-11-12T07:00:19.360 回答
53
curl "http://www.example.com?m=method&args=1"

您是否使用 & 作为 GET URL 的分隔符?还是在一条数据中?

如果它在数据中,则必须将其编码为 HTML 字符,如果不是,则用引号括起来。

的编码&应该%26在 URL 中。

curl "http://www.example.com?m=this%26that
于 2012-11-12T07:00:52.033 回答
29

在符号周围加上单引号&似乎有效。也就是说,使用http://www.example.com/page.asp?arg1=${i}'&'arg2=${j}curl 之类的 URL 会返回请求的网页。

于 2012-11-12T15:28:12.333 回答
19

您可以使用 -d 参数在 POST 请求中指定 http url 参数,而不是尝试转义“&”字符,如下所示:

curl -X POST http://www.example.com \
-d arg1=this \
-d arg2=that

如果请求是 GET,那么您还应该添加 -G 选项,它告诉 curl 使用 GET 请求发送数据。

curl -X GET -G http://www.example.com \
-d arg1=this \
-d arg2=that
于 2016-08-05T15:58:12.933 回答
11

您可以%26改用&. 实体代码将正常工作。

于 2015-02-25T18:33:17.623 回答
2

使用--url带双引号的参数对我有用

于 2020-06-11T02:57:07.410 回答
1

最简单的方法:

curl -X GET -G http://example.com -d var1=$1 -d var2=$2
于 2020-11-18T09:48:26.633 回答