程序员需要哪些引号?

问题描述 投票:0回答:7

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

我观察到我在CGI开发中需要正常的,在AWK/SED中需要落后的。

有什么规则应该使用智能引号、普通引号和后向引号吗?

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

quotes
7个回答
17
投票

如果您的意思是智能引号中的

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

在 shell 中,反引号(例如

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

在外壳中,

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

所以,例如:

$ 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,也有类似的规则,尽管可能存在细微差别。


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。

6
投票

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


3
投票

聪明的引言是魔鬼。


3
投票

据我所知,没有语言需要(甚至不一定支持)“智能引号”,除非您将反引号字符 ` 称为智能引号。如果是这样,许多语言都支持反引号。例如,bash 和 ruby 都使用反引号进行命令替换。

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


1
投票

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


1
投票

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

我认为之前的答案中已经非常清楚地列出了规则。

© www.soinside.com 2019 - 2024. All rights reserved.