【问题标题】:unix curl meaning of checkmarksunix curl 复选标记的含义
【发布时间】:2018-10-01 18:56:44
【问题描述】:

大家好,我有一个关于“curl”解析器如何在 linux 命令行中工作的问题:

我在一个 jokto-linux 系统上工作,我在其中编写命令行指令:

我想知道带复选标记“...”和不带复选标记有什么区别。

带有复选标记的命令行:

curl 'http://localhost:80/uri/?$sortby=name' > data.json

不带复选标记的命令行:

curl -i http://localhost:80/uri/?$sortby=name > data.json

带有复选标记的命令让我返回一个 http 200OK 和一个 json 格式的排序响应。没有复选标记的另一个命令也给我带来了 200OK 但响应未排序。 我不知道为什么。

感谢您的反馈

【问题讨论】:

    标签: curl embedded-linux command-line-arguments


    【解决方案1】:

    首先,它们被称为单引号,而不是复选标记。这是一个复选标记:✓

    Bash 将单引号理解为保护参数文本不被解释。通常,单引号的任何内容都不会有特殊含义,并且会被解释为纯文本。

    没有它们,?$ 对 bash 具有特殊意义:? 参与“globbing”(扩展文件名以匹配模式,其中 ? 是单个字符的占位符)和 @987654325 @ 参与变量扩展($sortby 将被变量sortby 的值替换)。

    ? 可能不匹配任何内容,因此将被单独放置,但$sortby,因为变量可能未定义,将被空字符串替换。最终结果是在curl 看到参数之前,如果不加引号,它将被转换,很可能变成http://localhost:80/uri/?=name - 这不是你想要的。

    如果存在的话,还有一些字符会更加混乱你的命令行;例如,!&、括号等。总是引用你的 URI 是个好主意。

    【讨论】:

      【解决方案2】:

      复选标记 () 在 shell 中没有特殊含义。

      用单引号 (') 引用的字符串带有具有该含义的特殊含义的停止字符(例如,& 不会将脚本置于后台,$ 不会启动变量)。

      延伸阅读:

      【讨论】:

        【解决方案3】:

        感谢您的正确回答。对此很抱歉,但我的谷歌翻译器将我从 German="Häckchen" 翻译成 English="checkmarks" 而不是引号。但通常我知道这个词。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-11
          • 1970-01-01
          • 2019-01-25
          • 1970-01-01
          • 1970-01-01
          • 2011-04-14
          • 2015-01-15
          • 1970-01-01
          相关资源
          最近更新 更多