当编写包含用户消息的 Bash 脚本时,我可以写
echo Processing files...
或者
echo "Processing files..."
在这种情况和许多其他情况下,输出将是相同的。那么什么时候我真正需要双引号,什么时候不需要它们呢?
我明白那个
echo This is my sentence.
和
echo "This is my sentence."
将产生不同的输出(第一种情况下单词之间有一个空格,第二种情况下保留空格),但是还有其他原因使用双引号吗?或者不是使用双引号?
(我意识到单引号有不同的效果;这个问题具体是关于双倍的引号。)
答案1
原因有很多,但主要有:
- 更好地控制空白的包含(您注意到了)
- 部分保护,防止意外的 shell 扩展,例如 glob 字符
*
和?
答案2
这里双引号和单引号之间有一个重要的区别。双引号将在带引号的字符串内插入变量(因为根本不会引用);单引号不会这样做。