如何在bash curl语句中包含'&'字符

Che*_*off 88 bash curl

我正在尝试使用bash中的curl来下载网页,但&URL中的符号不会被解释为我想要的字符.关于如何说服bash这个符号&只是一个无聊的角色而没什么特别的任何想法?

mju*_*rez 108

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

  • 单引号可能更好,除非需要解决变量. (7认同)
  • 请谨慎使用哪个程序来键入引号.在急于编辑shell脚本时,我使用了文本编辑程序.它使用倾斜的引号而不是直的双引号.这真的搞砸了脚本,让问题很难找到! (3认同)
  • 就我而言,双引号失败而单引号工作正常。 (2认同)

Mat*_*ark 35

curl "http://www.example.com?m=method&args=1"
Run Code Online (Sandbox Code Playgroud)

您是否使用&作为GET URL的分隔符?或者是一段数据?

如果是数据,则必须将其编码为HTML字符,否则,用引号括起来.

编码&应该%26在URL中.

curl "http://www.example.com?m=this%26that
Run Code Online (Sandbox Code Playgroud)

  • 第二个代码片段的末尾是否缺少“? (3认同)
  • 我刚刚显示URL的方式使用'&'作为GET变量的分隔符,所以现在我很困惑,在$ [i]中你有一段包含'&'的数据?如果是这种情况,您需要对其进行URL编码.&=%26 (2认同)
  • 搜索了整个互联网没有找到解决方案。@MattClark,你是英雄。我只是进行了 url 编码,这是一段数据,我的脚本工作正常。 (2认同)

Che*_*off 21

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

  • 您应该在问题中包含参数要求,以便将来的视图清楚. (2认同)

noe*_*ego 13

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

curl -X POST http://www.example.com \
-d arg1=this \
-d arg2=that
Run Code Online (Sandbox Code Playgroud)

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

curl -X GET -G http://www.example.com \
-d arg1=this \
-d arg2=that
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。添加双引号不起作用。 (2认同)

Ser*_*lto 8

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


She*_*iya 5

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