echo 输出感叹号(含有变量)问题

echo 输出感叹号(含有变量)问题
 [vonzhou@localhost kernel]$ name=voznhou
[vonzhou@localhost ~]$ myname="$name is me!"bash: !": event not found

因为 !” 会被当作命令行历史替换的符号来处理。不过在shell脚本中没有这样的问题。

不幸的是,你无法使用转义符来转义!

[vonzhou@localhost ~]$ myname="$name is me\!"[vonzhou@localhost ~]$ ]echo $myname

voznhou is me\!

解决方案之一,使用单引号,即

[vonzhou@localhost ~]$ myname='$name is me!'

[vonzhou@localhost ~]$ echo $myname

$name is me! 这时候虽然可以显示感叹号,但是内部变量$name却失去了原有的内容)

解决方案二,必须使用双引号,可以通过 set +H 来取消命令行历史替换

[vonzhou@localhost ~]$ set +H

[vonzhou@localhost ~]$ myname="$name is me\!"

[vonzhou@localhost ~]$ echo $myname

voznhou is me\! ---无需转义)

[vonzhou@localhost ~]$ myname="$name is me!"

[vonzhou@localhost ~]$ echo $myname

voznhou is me! ----OK !)

解决方案三,不要将叹号放入“ ”中 

[vonzhou@localhost ~]$ name=vonzhou

[vonzhou@localhost ~]$ myname="$name is me!"

bash: !": event not found

[vonzhou@localhost ~]$ myname="$name is me"!! ---发现只能是一个感叹号,原因暂时不明)

myname="$name is me"name=vonzhou

[vonzhou@localhost ~]$ myname="$name is me"! OK 了)

[vonzhou@localhost ~]$ echo $myname

vonzhou is me!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值