unix curl复选标记的含义

unix curl meaning of checkmarks

大家好,我有一个关于 '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 但响应未排序。 我不知道为什么。

感谢反馈

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

Bash 将单引号理解为保护论证文本免受解释。通常,单引号中的任何内容都没有特殊含义,并且将被解释为纯文本。

没有它们,?$ 对 bash 有特殊意义:? 参与 "globbing"(扩展文件名以匹配模式,其中 ?是单个字符的占位符),$参与变量展开($sortby会被变量sortby的值代替)。

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

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

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

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

进一步阅读:

  • Difference between single and double quotes in Bash
  • When to wrap quotes around a shell variable?

感谢您的正确回答。抱歉,我的 googletranslator 将我从 german="Häckchen" 翻译成 english="checkmarks" 而不是引号。但通常我知道这个词。