3

我的键盘只有普通引号,没有智能引号。

我发现我在cgi 开发中需要正常的,在AWK/SED中需要落后的。

当我应该使用智能引号、正常引号和后引号时,有什么规则吗?

显然,我需要编辑我的键盘布局以获得智能引号。

4

8 回答 8

17

如果您的意思`是智能引号,那么实际上称为“反引号”。智能引号是当您键入 ' 和 " 时,但会根据上下文自动获取 ' 和 ' 或 " 和 "。我不确定您将如何在 awk 或 sed 中使用智能引号。

在 shell 中,反引号,例如`command`,用于计算命令并将其中的命令结果替换为正在计算的 shell 表达式;它可用于计算和参数到另一个命令,或设置变量。为了减少歧义,您可以改用$(command),这使得许多引用规则更容易制定。

在shell中,'"也不同。"用于需要变量替换和转义序列的字符串。'表示仅包含引号内的字符的字符串,没有变量插值或转义序列。

因此,例如:

$ name=world
$ echo "Hello, $name"
Hello, world
$ echo 'Hello, $name'
Hello, $name
$ echo "Testing \\ escapes"
Testing \ escapes
$ echo 'Testing \\ escapes'
Testing \\ escapes
$ echo `ls`
example-file another-example
$ echo 'ls'
ls
$ echo "ls"
ls

其他脚本语言,例如 Perl 和 Ruby,也有类似的规则,尽管可能会有细微的差别。

于 2009-03-24T20:36:15.057 回答
7

智能引号用于漂亮的排版。它们与编程无关。

编辑:你需要的报价。

  • 双引号:“”它们用于许多语言中的文字字符串
  • 单引号:' ' 用于某些语言(如 C)中的文字字符以及用于 javascript 和 php 等语言中的字符串。(例如,如果您需要打印字符串“foo”,您可以使用'"foo"'
  • 反引号:在 UNIX shell 中,表示将一个命令的标准输出替换为定义另一个命令的文本行。例如echo``date\可能执行 echo Sat Mar 1 09:43:00 GMT 2008 并打印 Sat Mar 1 09:43:00 GMT 2008。
于 2009-03-24T20:42:51.813 回答
6

反引号在 shell/awk/perl 编程中以及在 TeX 中处理文档时被大量使用。除此之外,您可能不会经常使用它们。

于 2009-03-24T20:35:19.943 回答
3

聪明的报价是魔鬼。

于 2009-03-24T20:35:35.857 回答
3

据我所知,任何语言都不需要(甚至必须支持)“智能引号”,除非您将反引号字符称为智能引号。如果是这种情况,许多语言都支持反引号。例如,bash 和 ruby​​ 都使用反引号来进行命令替换。

回答这个问题我应该使用智能引号和普通引号时有什么规则吗?,是的,有一个规则(同样,假设您说“智能引号”时是指反引号)。在大多数语言中,不同类型的引用会给你不同类型的行为。规则是,了解该特定语言的行为是什么,然后选择给出该行为的引用。

于 2009-03-24T20:35:42.127 回答
1

智能引号是文字处理器功能。当您键入“quote”时,它会自动替换为“quote”或“quote”。我认为你的命名错误。

于 2009-03-24T20:46:45.830 回答
1

仅供参考,“智能引用”的另一个术语(我以前从未听说过),是重音。

我认为在以前的答案中已经很清楚地列出了规则。

于 2009-03-24T21:49:36.397 回答
1

$ /usr/游戏/财富

于 2010-03-17T15:30:49.393 回答