Warm tip: This article is reproduced from serverfault.com, please click

shell-Bash中单引号和双引号之间的区别

(shell - Difference between single and double quotes in Bash)

发布于 2011-07-14 17:55:27

在Bash中,单引号('')和双引号(""之间有什么区别

Questioner
jrdioko
Viewed
11
28.1k 2018-04-20 23:44:37

单引号不会插值,但双引号会插值。例如:变量,反引号,某些\转义符等。

例子:

$ echo "$(echo "upg")"
upg
$ echo '$(echo "upg")'
$(echo "upg")

Bash手册说:

3.1.2.2单引号

将字符括在单引号(')中可保留引号内每个字符的字面值。即使在单引号之前加反斜杠,也不能在单引号之间引起单引号。

3.1.2.3双引号

在双引号包围字符(")保留了引号中的所有字符的字面意义,例外$`\,和,启用了历史扩展的时候,!字符$`双引号中保留其特殊含义(请参见Shell Expansions)。反斜杠后跟当由下列字符只保留它的特殊含义:$`"\,或换行符。在双引号中,将删除反斜杠,后跟这些字符之一。没有特殊含义的反斜杠前面的字符将保持不变。双引号可以在双引号内加上反斜杠。如果启用,将执行历史记录扩展,除非!使用反斜杠将双引号引起来。之前的反斜杠!不会被删除。

特殊参数*@在双引号中具有特殊含义(请参阅Shell参数扩展)。