我正在学习Bash脚本的基础知识。如果我没有弄错,那么没有分隔符的字符串和用双引号("
)分隔的字符串几乎是以相同的方式解释的,所以就像字母数字字符串一样;内部的变量被扩展。另一方面,用单引号('
)分隔的字符串不会扩展变量,这是将它们与前面提到的变量进行比较的主要区别。 在终端上练习一下,我注意到一条语句不能按我的预期工作。正如你可以看到在这个例子:为什么不回声“Hello World!”声明按预期工作?
MacBook-Pro-di-Rodolfo:~ Rodolfo$ echo Hello World!
Hello World!
MacBook-Pro-di-Rodolfo:~ Rodolfo$ echo 'Hello World!'
Hello World!
MacBook-Pro-di-Rodolfo:~ Rodolfo$ echo "Hello World!"
echo "Hello World"
Hello World
最后的语句不打印出相同的字符串作为以前的,截断的感叹号。任何人都可以向我解释这个角色移除的原因吗? 如果它可以有用,我在Mac OS X v。10.9下运行所有这些。
见http://unix.stackexchange.com/q/33339/23529 –
@DanielJour,所以最优雅的解决方案,以避免这种情况是只使用单引号,考虑到反斜杠字符DOEN”在这种情况下工作? – rudicangiotti
在这里使用转义反斜杠有什么问题? IIRC相邻的字符串由bash连接起来,所以像'“Hello World”'!''也应该起作用。 –