【发布时间】:2011-08-05 16:37:16
【问题描述】:
" " 和 \ 在 bash 中有什么区别吗?
例如,ls *" "* 和 ls *\ * 将为我返回相同的结果。
【问题讨论】:
" " 和 \ 在 bash 中有什么区别吗?
例如,ls *" "* 和 ls *\ * 将为我返回相同的结果。
【问题讨论】:
"" 版本将产生更多的开销来解析任何潜在变量/运算符的引号内部。反斜杠空格版本将被视为仅没有额外开销的文字空格。然而,两者之间的 cpu 时间/内存使用的实际成本将是非常微小的,除非它在一个正在运行数千次的循环中。
【讨论】:
反斜杠仅屏蔽下一个字符,如果您只想屏蔽一个字符,可能会更快键入,但这可能取决于您的键盘布局,以及您是否盲目地用 10 根手指键入。我更喜欢引号,因为它们更容易输入。
掩饰对方和自己是另一个区别:
echo \\
会输出一个反斜杠,但是
echo "\"
将输出一个 ",并等待结束引号。
echo \"
会起作用,并输出一个报价,但是
echo """
不会,原因同上。
一些特殊字符,如换行、换页、制表符、警告等,只能用反斜杠产生,但不能用引号产生,包括反斜杠本身。
/bin/echo -e "\tfoo\abar\bbar\ffoo\nbar\rfoo"
完整列表请参见man echo。
这不仅适用于 echo,而且适用于您可以在脚本中使用字符串执行的许多操作。
【讨论】: