是什么意思 !”?

是什么意思 !”?

该命令echo !"返回一条错误消息。但命令echo "Hello!"成功了。使用命令是否正确echo "Hello!"

答案1

假设您正在运行 Bash,!触发器历史扩展。如果它打开,并且您编写eg !echo,它将被以 开头的最后一个命令替换echo。该功能最初来自csh,我不知道还有哪些其他shell支持它。

历史扩展不是最聪明的功能,例如!"会触发它,即使它似乎总是失败(运行"echo" foo然后尝试!"仍然失败)。令人烦恼的是,它还会触发内部双引号,例如 in echo "!hello"。在 Bash 3.2 中,echo "hello!"也会触发它,但显然这在新版本中发生了变化。

我的建议是关闭它,将set +o histexpandset +H放入 Bash 的启动文件中。

相关内容