如何打印 Hello!World

如何打印 Hello!World

更广泛地说,如何回声!在 bash 中,中间没有空格

karthik@cosmic:~$ echo "Hello!World"
bash: !World: event not found
karthik@cosmic:~$ echo "Hello\!World"
Hello\!World
karthik@cosmic:~$ 

答案1

感谢某人,解决方案很简单。

删除那些双引号并转义!

echo Hello\!World

或者对于 bash 4.3 或更高版本,使用双引号,但确保!紧跟在结束引号后面:

echo "Hello!""World"

bash 4.3 中的发行说明

湖当双引号字符串中后跟结束引号时,历史扩展字符 (!) 不会导致历史扩展。

最好是使用单引号,其中所有字符都会失去其特殊含义。

echo 'Hello!World'

或者完全禁用 csh 风格的历史扩展:

histchars=

或者:

set +o histexpand

或者:

set +H

请注意,历史扩展仅在 bash 交互时默认启用,而不是在脚本中启用。


只要`...`不使用已弃用的命令替换形式,即使\在单引号内,它内部也保留特殊含义。

相关内容