更广泛地说,如何回声!在 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"
湖当双引号字符串中后跟结束引号时,历史扩展字符 (!) 不会导致历史扩展。
最好是使用单引号,其中所有字符都会失去其特殊含义。
echo 'Hello!World'
或者完全禁用 csh 风格的历史扩展:
histchars=
或者:
set +o histexpand
或者:
set +H
请注意,历史扩展仅在 bash 交互时默认启用,而不是在脚本中启用。
只要`...`
不使用已弃用的命令替换形式,即使\
在单引号内,它内部也保留特殊含义。