我无法弄清楚将!
符号放在双引号字符串中时如何在 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 提示符。!
- 您不需要!
在上面的命令中转义 ,因为它位于一对双引号字符内。