" "
和\
在bash中有什么区别吗?
例如,对我来说,ls *" "*
和ls *\ *
返回的结果相同。
""
版本会在解析引号内的变量/运算符时产生微小的开销。反斜杠空格版本将被视为只有一个字面上的空格,没有额外的开销。然而,除非它在运行kajillions次的循环内部,否则两者之间的实际CPU时间/内存使用成本将是微不足道的。
反斜杠只能掩盖下一个字符,如果你只想掩盖一个字符,可能会更快地输入,但这取决于你的键盘布局以及你是否盲打十指。我更喜欢引号,因为它们更容易输入。
相互和自身的掩盖是另一个区别:
echo \\
会输出一个反斜杠,但是
echo "\"
将输出一个双引号,并等待闭合引号。
echo \"
这将起作用并输出一条引用,但是
echo """
出于上述原因,不会执行。
一些特殊字符,如换行符、换页符、制表符、警报等只能用反斜杠来生成,而不能用引号,包括反斜杠本身。
/bin/echo -e "\tfoo\abar\bbar\ffoo\nbar\rfoo"
查看 man echo
以获取完整列表。
这不仅适用于 echo
,还适用于许多在脚本中使用字符串的操作。