• linux中如何通过echo输出!(叹号)? -bash: !": event not found


    需求描述:

      今天在做通过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 --stdin mytest
    Changing password for user mytest.
    passwd: all authentication tokens updated successfully.
    [root@testvm ~]# su - mytest
    [mytest@testvm ~]$ su - mytest
    Password: 
    [mytest@testvm ~]$ 

    备注:这样就可以在密码中包括!这个符号了.

    4.经过测试发现,如果使用双引号输出字符最后一位是叹号!会报错,如果后面有空格就不会报错

    [root@testvm ~]# echo "my@test! "  #后面有空格,就能够输出叹号,所以如果叹号是最后一位是要接事件event的,但是这样密码中也有空格了.
    my@test! 
    [root@testvm ~]# echo "my@test!"
    -bash: !": event not found

    5.经过测试,echo后面直接接字符就可以即不将其放入到单引号也不放在双引号中

    [root@testvm ~]# echo my@test! | passwd --stdin mytest
    Changing password for user mytest.
    passwd: all authentication tokens updated successfully.
    [root@testvm ~]# su - mytest
    [mytest@testvm ~]$ su - mytest
    Password: 
    [mytest@testvm ~]$ 

    备注:同样达到一样的效果,这里没有使用单引号,也没有使用双引号.

    文档创建时间:2018年7月2日13:28:20

    文档修改1:增加4这个测试,使用双引号,!号后面加空格可以输出,但是密码不符合预期的要求.          时间:2018年7月2日13:35:08

    文档修改2:增加5的内容,echo后面不使用单引号,也不使用双引号进行叹号的输出.          时间:2018年7月2日13:43:44

  • 相关阅读:
    使用路由传参时,query与params的区别!
    写前端页面步骤----vue+iview
    使用vue做表单验证
    vue中find函数
    @Controller和@RestController的区别?
    JavaScript 拥有动态类型
    Console的9种用法
    Navicat连接Oracle报ORA-12737错误
    oracle查询数据库连接数相关
    oracle存储过程把查询到的值更新到别的表
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/9253410.html
Copyright © 2020-2023  润新知