我习惯于键入带引号的字符串,但从现在起,当我浏览配置文件和建议时,我会看到使用了撇号。
我经常将撇号的东西复制到我的配置文件中,并用我的引号替换它,以便代码组合在一起。
但它们的区别是什么?(我主要针对 bash 使用它。如果其他基于 Linux 的脚本的做法不同,那将是额外的。)
例如:
echo "Hello World!" 和 echo 'Hello World!'
如果我使用一个或另一个,我可能无法使用(格式化的)变量,或者这只是个人喜好,有什么关系吗?
dr_*_*dr_ 15
单引号和双引号是有区别的,不是风格问题。单引号将逐字地回应您所写的内容,因此您可以确保所写的内容将被打印出来。另一方面,双引号将插入变量的值。
来自man bash:
将字符括在单引号中会保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠。
双引号中的字符会保留引号内所有字符的字面值,但 $、反引号、\ 和启用历史扩展时的 ! 除外。字符 $ 和反引号在双引号内保留其特殊含义。反斜杠仅在后跟以下字符之一时保留其特殊含义:$、`、"、\ 或换行符。双引号可以通过在双引号内加上反斜杠来引用。如果启用,历史扩展将被除非出现在双引号中的 ! 使用反斜杠进行转义,否则不会删除 ! 之前的反斜杠。
所以在你的例子中:
#!/bin/bash
PLACE="World"
echo "Hello $PLACE !"
echo 'Hello $PLACE !'
Run Code Online (Sandbox Code Playgroud)
将导致此输出:
Hello World !
Hello $PLACE !
Run Code Online (Sandbox Code Playgroud)
https://www.gnu.org/software/bash/manual/bashref.html#Quoting
内部双引号变量被扩展。
单引号防止字符串插值:
将字符括在单引号中会保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠。
还有$'…'允许使用 ANSI C 转义序列的符号。
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |