【问题标题】:How to include an '&' character in a bash curl statement如何在 bash curl 语句中包含“&”字符
【发布时间】:2012-10-31 15:01:40
【问题描述】:

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

【问题讨论】:

  • 看看下面的主题,这应该对你有帮助 - stackoverflow.com/questions/2067969/…
  • 我已尝试将 & 符号替换为 \&'&'"&"^&,但无法正确评估 URL。实际上,'&' 在我从 Terminal.app 运行 curl 命令时有效,但是当我将它放在 bash 脚本中时失败,将其包装在一个循环中并运行它。

标签: bash curl


【解决方案1】:

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

【讨论】:

  • 单引号可能更好,除非需要解析变量。
  • 当我在整个 URL 周围使用引号时,表达式 ${i} 不会返回值。
  • 就我而言,双引号失败,而单引号工作正常。
  • 请谨慎使用什么程序来输入引号。在急于编辑 shell 脚本时,我使用了一个文本编辑程序。它使用斜引号而不是直双引号。这真的把脚本弄乱了,让问题很难找到!
  • 单引号在我的 .cmd 文件中不起作用,但双引号起作用
【解决方案2】:
curl "http://www.example.com?m=method&args=1"

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

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

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

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

【讨论】:

  • 我使用& 符号作为一条数据,几乎与您展示的一样。问题是,我使用的是${i},而不是数值。所以我想让http://www.example.com?m=method&args=${i} 评估为一个URL。
  • 我刚刚显示 URL 的方式使用 '&' 作为 GET 变量的分隔符,所以现在我很困惑,在 $[i] 中你有一条包含 '&' 的数据?如果是这种情况,您将需要对其进行 URL 编码。 & = %26
  • 搜遍整个互联网都找不到解决办法。 @MattClark 你是英雄。我只是 url 编码 & 这是一段数据,我的脚本工作正常。
  • 第二个代码sn-p的末尾是不是少了"?
【解决方案3】:

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

【讨论】:

【解决方案4】:

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

【讨论】:

    【解决方案5】:

    您可以在POST请求中使用-d参数指定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
    

    【讨论】:

    • 这对我有用。添加双引号不起作用。
    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

      最简单的方法:

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

      【讨论】:

        猜你喜欢
        • 2014-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 2014-07-02
        • 1970-01-01
        相关资源
        最近更新 更多