-bash: !": event not found错误 原因是双引号内叹号有特殊含义,用单引号就对了

在Linux环境中尝试使用echo和passwd命令修改用户密码时遇到`-bash: !: event not found`错误。原因是叹号(!)在Shell中有特殊含义。解决方法包括:1)使用转义字符对!转义,但会导致额外的.;2)用单引号括起字符串,避免转义和变量替换;3)直接在echo后面输入包含!的密码,不加引号,确保最后一位不是叹号或后面有空格。
摘要由CSDN通过智能技术生成

需求描述:

  今天在做通过echo结合passwd给用户改密码的过程中,出现无法修改的错误.

错误如下:

[root@testvm ~]# useradd mytest
[root@testvm ~]# echo "my@test!" | passwd --stdin mytest
-bash: !": event not found

错误分析:

  经过查找该命令发现叹号!在linux中有特殊的定义,可以用来执行历史的命令或者当做逻辑否定等方式来使用,所以呢,叹号是一个特殊的字符,想要将字符进行当做普通字符来使用,必须进行转义.

问题处理:

1.通过转义字符对!号进行转义

[root@testvm ~]# echo "my@test\!"
my@test\!

备注:发现这样的输出里面就多了\.所以,这个方法不对.

2.echo后面使用单引号输出

[root@testvm ~]# echo 'my@test!'
my@test!

[root@testvm ~]# echo '$my@test! \ # %'
$my@test! \ # %

备注:如果使用单引号,那么就会原样的输出字符串,不进行转义,不取变量值

3.再次通过echo和passwd修改用户密码

复制代码

[root@testvm ~]# echo 'my@test!' | passwd
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值