小编典典

Bash中单引号和双引号的区别

all

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


阅读 121

收藏
2022-03-02

共1个答案

小编典典

单引号不会插入任何内容,但双引号会。例如:变量、反引号、某些\转义等。

例子:

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

Bash 手册有这样的说法:

3.1.2.2 单引号

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

3.1.2.3 双引号

将字符括在双引号 ( ") 中会保留引号内所有字符的字面值,但$, , `\`, 和启用历史扩展时除外`!`。字符`$`并在双引号内保留其特殊含义(请参阅Shell
Expansions
)。反斜杠仅在后跟以下字符之一时才保留其特殊含义:$, ``,,`,或换行符。在双引号内,删除后面跟有这些字符之一的反斜杠。没有特殊含义的字符前面的反斜杠保持不变。双引号可以用反斜杠在双引号中引用。如果启用,将执行历史扩展,除非!出现在双引号中的使用反斜杠进行转义。前面的反斜杠!不会被删除。

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

2022-03-02