我的键盘只有普通引号,没有智能引号。
我观察到我在CGI开发中需要正常的,在AWK/SED中需要落后的。
有什么规则应该使用智能引号、普通引号和后向引号吗?
显然,我需要编辑键盘布局才能获得智能引号。
如果您的意思是智能引号中的
`
,那么这实际上称为“反引号”。智能引号是指当您键入 ' 和 " 时,但会根据上下文自动获取 ' 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,也有类似的规则,尽管可能存在细微差别。
智能引号用于美观的排版。它们与编程无关。
编辑:您确实需要的报价。
'"foo"'
)echo
``date\
可能会执行 echo Sat Mar 1 09:43:00 GMT 2008 并打印 Sat Mar 1 09:43:00 GMT 2008。反引号在 shell/awk/perl 编程以及在 TeX 中处理文档时大量使用。除此之外,您可能不会经常使用它们。
聪明的引言是魔鬼。
据我所知,没有语言需要(甚至不一定支持)“智能引号”,除非您将反引号字符 ` 称为智能引号。如果是这样,许多语言都支持反引号。例如,bash 和 ruby 都使用反引号进行命令替换。
回答这个问题当我应该使用智能引号和普通引号时是否有任何规则?,是的,有一个规则(再次假设您说“智能引号”时指的是反引号)。在大多数语言中,不同类型的引用会带来不同类型的行为。规则是,了解该特定语言的行为是什么,然后选择给出该行为的引用。
智能引号是文字处理功能。当您输入“quote”时,它会自动替换为“quote”或“quote”。我认为你的命名法有误。
仅供参考,“智能引号”的另一个术语(我以前从未听说过),是重音。
我认为之前的答案中已经非常清楚地列出了规则。