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

标签 bash shell quotes double-quotes single-quotes

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

最佳答案

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

例子:

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

Bash 手册是这样说的:

3.1.2.2 Single Quotes

Enclosing characters in single quotes (') preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

3.1.2.3 Double Quotes

Enclosing characters in double quotes (") preserves the literal value of all characters within the quotes, with the exception of $, `, \, and, when history expansion is enabled, !. The characters $ and ` retain their special meaning within double quotes (see Shell Expansions). The backslash retains its special meaning only when followed by one of the following characters: $, `, ", \, or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ! appearing in double quotes is escaped using a backslash. The backslash preceding the ! is not removed.

The special parameters * and @ have special meaning when in double quotes (see Shell Parameter Expansion).

关于bash - Bash 中单引号和双引号的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697753/

相关文章:

html - 替换文件中特定行号处的字符

linux - 找不到命令

windows - 在awk中转义嵌套的双引号

带引号的 Javascript 书签

mysql - MySQL 中何时使用单引号、双引号和反引号

linux - Bash 排序重定向

bash - 在 bash 的算术语句之前什么时候需要美元符号?

bash - 在提交后颠覆 Hook 中获取项目名称

linux - Bash:使用文件名作为带通配符的命令

linux - 变量作为 SunOs 5.10 中的 Tar 文件名