如何包括'&';bash curl语句中的字符

如何包括'&';bash curl语句中的字符,bash,curl,Bash,Curl,我试图在bash中使用curl来下载网页,但是URL中的&符号并没有像我所希望的那样被解释为字符。关于如何让bash相信符号&只是一个无聊的字符,没有什么特别的想法吗?将整个URL放在双引号内应该可以解决您的问题 curl "http://www.example.com?m=method&args=1" 是否将&用作GET URL的分隔符?还是在一段数据中 如果它在数据中,则必须将其编码为HTML字符,如果不是,则用引号括起来 &的编码应在URL中变为%26 curl "http://

我试图在bash中使用curl来下载网页,但是URL中的
&
符号并没有像我所希望的那样被解释为字符。关于如何让bash相信符号
&
只是一个无聊的字符,没有什么特别的想法吗?

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

curl "http://www.example.com?m=method&args=1"
是否将&用作GET URL的分隔符?还是在一段数据中

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

&
的编码应在URL中变为
%26

curl "http://www.example.com?m=this%26that

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

您可以使用
%26
代替
&

实体代码可以正常工作。

您可以使用-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
使用参数
--url
和双引号对我有效

最简单的方法:

curl -X GET -G http://example.com -d var1=$1 -d var2=$2

单引号可能更好,除非需要解析变量。当我在整个URL周围使用引号时,表达式
${I}
不会返回值。在我的情况下,双引号失败,而单引号工作正常。请注意使用什么程序键入引号。在匆忙编辑shell脚本时,我使用了一个文本编辑程序。它使用斜引号而不是直双引号。这真的弄乱了脚本,使问题很难找到!单引号在我的.cmd文件中不起作用,但双引号起作用。请看下面的主题。这应该会对您有所帮助-我已尝试将
&
符号替换为
\&
'&
“&”
^&
,但无法正确计算URL。实际上,
&
在我从Terminal.app运行curl命令时起作用,但在我将其放入bash脚本、将其包装在循环中并运行时失败。我将
&
符号用作一段数据,几乎与您所示的完全相同。问题是,我使用的不是数值,而是
${I}
。所以我想得到
http://www.example.com?m=method&args=${i}
作为URL进行计算。我刚才显示URL的方式使用“&”作为GET变量的delimeter,所以现在我很困惑,在$[i]中,您有一段包含“&”的数据吗?如果是这种情况,您需要对其进行URL编码。&=%整个互联网都找不到解决办法@马特克拉克,你是英雄。我只是对url进行了编码&这是一段数据,我的脚本工作正常。第二个代码段末尾是否缺少一个“?您应该在问题中包含参数要求,以便将来查看清楚。为什么要接受此答案?此答案必须接受此操作对我有效。添加双引号不起作用。