bash中的" "
和\
之间是否存在差异?
例如,ls *" "*
和ls *\ *
将为我返回相同的结果。
答案 0 :(得分:8)
""
版本将为任何潜在的变量/运算符解析引号的内部带来更多的开销。反斜杠空间版本将被视为只有文字空间而没有额外的开销。两者之间的cpu时间/内存使用的实际成本将是完全微观的,但是,除非它在一个循环中运行kajillions次。
答案 1 :(得分:0)
反斜杠只会掩盖下一个字符,如果你只想掩盖一个字符,可能会更快打字,但这可能取决于你的键盘布局,以及你是否盲目地键入10个手指。我更喜欢引用,因为它们更容易打字。
互相掩饰和自己是另一个不同之处:
echo \\
将输出反斜杠,但
echo "\"
将输出“,并等待收盘报价。
echo \"
将起作用,并输出报价,但
echo """
不会,出于与上述相同的原因。
某些特殊字符(如换行符,换页符,制表符,提示符等)只能用反斜杠生成,但不能用引号生成,包括反斜杠本身。
/bin/echo -e "\tfoo\abar\bbar\ffoo\nbar\rfoo"
有关完整列表,请参阅man echo
。
这不仅适用于echo
,而且您可以在脚本中使用字符串进行许多操作。