需求描述:
今天在做通过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