echo 在做什么?

echo 在做什么?

最近,我注意到,如果回显中包含大量“!”,则会产生奇怪的东西。例如echo !!

echo rm -r * 1000
rm -r * 1000

rm -r *是我输入之前执行的最后一个命令)。为什么会发生这种情况?有没有办法禁用它?

答案1

您遇到了shell expansion- shell 将解析您的命令并用其他信息替换特殊通配符。尝试echo '!!'(单引号) 来了解 shell 扩展和引号可以做什么。

您可以在man页面中阅读有关 shell 扩展的更多信息bash。请注意历史扩展,讨论event designators类似!!,和扩张,其中讨论了其他形式的壳层展开。引用解释 bash 引用机制的行为以及单引号和双引号字符串的评估方式之间的区别。

相关内容