语句解释?!

来源:6-2 例:批量添加删除指定数量的用户

dearestx

2016-01-06 10:55

echo $pass | /usr/bin/passwd -- stdin $name$i
大家帮忙解释一下这句。主要是管道符 | 和 --stdin $name$i 的顺序
谢谢!


写回答 关注

8回答

  • iliul
    2016-01-07 13:00:24
    已采纳

    我尝试了一下,在Ubuntu下passwd命令是不支持 --stdin 参数的,查下资料说在debian上就不再支持了,不知道你的是不是Ubuntu系统呢?

    我尝试了在CentOS上没有问题,当然Ubuntu上可以通过下面的命令代替:

    echo "$name$i:$pass" | chpasswd &> /dev/null


    iliul 回复deares...

    解决了就好,下次提问时记得把错误信息贴出来,这样解决的快而准!

    2016-01-08 18:19:08

    共 4 条回复 >

  • CHINA8
    2017-06-04 08:46:02

    然后应该怎么执行呢?抱歉我还是有点看不懂啊。

  • wulongtao
    2016-05-28 11:44:15

    设置密码的时候不能成功设置;但是用户已经创建了~

  • dearestx
    2016-01-07 17:24:33

    http://img.mukewang.com/568e2ea60001f75b07410388.jpg

    系统版本,定义的变量,执行视频中的语句,执行结果用户并没有添加成功

  • iliul
    2016-01-07 13:05:13
  • dearestx
    2016-01-06 18:23:06

    http://www.imooc.com/video/7968

    http://img.mukewang.com/568ceafe00014b9d10050590.jpg

    无法成功执行此句!

  • iliul
    2016-01-06 16:50:48

    如果

    /usr/bin/passwd -- stdin $name$i

    这样写,--叫做选项结束符,好像是这个意思,代表命令选项到此结束,来个例子。

    root@iliul-PC:~# mkdir -- -l
    root@iliul-PC:~# mkdir -l
    mkdir:无效选项 -- l
    Try 'mkdir --help' for more information.
    root@iliul-PC:~#

    如果不加 -- 就会把-l当做option

    deares...

    管道符我懂。 --stdin 是这样的格式,上面打的时候分开了。 就是长选项 -- 。 (短选项只有一个减号) 所以是这样: echo $pass | /usr/bin/passwd --stdin $name$i PS: 命令: passwd 用户名 然后,提示你输入密码 所以,我能理解的是:passwd 给用户 $name$i 设置密码为 echo $pass 的输出, 而设置密码的时候要手动输入密码,所以用 --stdin 把密码传入 有点乱~

    2016-01-06 18:09:02

    共 1 条回复 >

  • iliul
    2016-01-06 16:46:37

    没有看懂后面 

    -- stdin $name$i

    这段,补充完整吧,包括这几个参数,管道符号 |  前面的命令结果会作为后面的输入,也就是

    echo $pass

    的结果。

shell编程之条件判断与流程控制

Linux shell实用案例学习,一定会使你Linux运维能力再次提高

35507 学习 · 139 问题

查看课程

相似问题