如何在 Bash 中的双引号之间写“!”符号?

如何在 Bash 中的双引号之间写“!”符号?

我无法弄清楚将!符号放在双引号字符串中时如何在 bash 脚本中写入符号。

例如:

var="hello! my name is $name! bye!"

如果我输入以下命令,就会发生一些奇怪的事情:

$ age=20
$ name='boda'
$ var="hello! my name is $name! bye!"

当我在最后一个命令处按下回车键时,该命令会重复执行(自行输入),而没有最后一个!

var="hello! my name is $name! bye"

如果我再次按下回车键:

$ var="hello! my name is $name bye"

如果我再次按回车键,它就会消失,不会有任何输出:

$ 

如果我尝试这样做:

$ echo "hello\! my name is $name\! bye\!"

然后输出:hello\! my name is boda\! bye\!

如果我使用单引号,那么我的名字就不会扩展:

$ echo 'hello! my name is $name! bye!'

输出为:hello! my name is $name! bye!

我是这样工作的:

$ echo "hello"'!'" my name is $name"'!'" bye"'!'

但它是一个大混乱"'不可能理解/编辑/维护/更新。

有人可以帮忙吗?

答案1

如果你这样做,你的代码将更容易阅读:

:~$ name='boda'
:~$ var="hello! my name is $name! bye!" && echo $var
hello! my name is boda! bye!
  • &&echo $var-仅当第一个命令成功时才会执行第二个命令var="hello! my name is $name! bye!"

  • :~$- 在此示例中未输入它,因为它表示 bash 提示符。

  • !- 您不需要!在上面的命令中转义 ,因为它位于一对双引号字符内。

相关内容