为什么我不能在bash';回声,即使它逃逸了也没有?

为什么我不能在bash';回声,即使它逃逸了也没有?,bash,Bash,我的问题很简单: $ echo "Hello!" sh: !": event not found 什么是在这种情况下?然后我尝试了echo“Match\!”,但结果是Match\。如何编写语句?您可以使用单引号: echo 'Hello!' Hello! 否则,在双引号中,shell将尝试展开从历史记录中删除事件。您可以使用set+H关闭历史记录扩展,然后使用set-H重新启用它。现在您的速度更快了:)@fedorqui:罕见的情况之一:)谢谢,我不知道单引号和双引号对扩展的影响。@Tobi

我的问题很简单:

$ echo "Hello!"
sh: !": event not found

什么是
在这种情况下?然后我尝试了
echo“Match\!”
,但结果是
Match\。如何编写语句?

您可以使用单引号:

echo 'Hello!'
Hello!

否则,在双引号中,shell将尝试展开
从历史记录中删除事件。

您可以使用
set+H
关闭历史记录扩展,然后使用
set-H

重新启用它。现在您的速度更快了:)@fedorqui:罕见的情况之一:)谢谢,我不知道单引号和双引号对扩展的影响。@Tobias:在shell编程中,了解单引号和双引号的区别非常重要。因为unix shell不在单引号中展开变量。是的,我明白了
echo$foo
echo“$foo”
,但它不等于
echo'$foo'
。最后一个打印字符串
$foo
bash
从C shell导入了一个应该留在C shell中的功能,而sea shell应该留在海边,远离最近的计算机。请参阅
bash
手册页的
引用
部分。它描述了单引号和双引号对shell元字符的影响,包括
启用历史扩展时。