''在 Bash 中,单引号 ( ) 和双引号 ( )有什么区别""?
''
""
单引号不会插入任何内容,但双引号会。例如:变量、反引号、某些\转义等。
\
例子:
$ echo "$(echo "upg")" upg $ echo '$(echo "upg")' $(echo "upg")
Bash 手册有这样的说法:
3.1.2.2 单引号 将字符括在单引号 ( ') 中会保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠。 3.1.2.3 双引号 将字符括在双引号 ( ") 中会保留引号内所有字符的字面值,但$, , `\`, 和启用历史扩展时除外`!`。字符`$`并在双引号内保留其特殊含义(请参阅Shell Expansions)。反斜杠仅在后跟以下字符之一时才保留其特殊含义:$, ``,“,`,或换行符。在双引号内,删除后面跟有这些字符之一的反斜杠。没有特殊含义的字符前面的反斜杠保持不变。双引号可以用反斜杠在双引号中引用。如果启用,将执行历史扩展,除非!出现在双引号中的使用反斜杠进行转义。前面的反斜杠!不会被删除。 双引号中的特殊参数*和@具有特殊含义(请参阅Shell 参数扩展)。
3.1.2.2 单引号
将字符括在单引号 ( ') 中会保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠。
'
3.1.2.3 双引号
将字符括在双引号 ( ") 中会保留引号内所有字符的字面值,但$, , `\`, 和启用历史扩展时除外`!`。字符`$`并在双引号内保留其特殊含义(请参阅Shell Expansions)。反斜杠仅在后跟以下字符之一时才保留其特殊含义:$, ``,“,`,或换行符。在双引号内,删除后面跟有这些字符之一的反斜杠。没有特殊含义的字符前面的反斜杠保持不变。双引号可以用反斜杠在双引号中引用。如果启用,将执行历史扩展,除非!出现在双引号中的使用反斜杠进行转义。前面的反斜杠!不会被删除。
"
$
, `\`, 和启用历史扩展时除外`!`。字符`$`并
``,
,
!
双引号中的特殊参数*和@具有特殊含义(请参阅Shell 参数扩展)。
*
@