yidehui 发表于 2013-9-11 22:32:48

请教一条简单的linux指令!

本帖最后由 yidehui 于 2013-9-11 23:24 编辑

这几天这学习shell编程,下面的例子是批量添加用户的脚本。

我很好奇对于标示/////////////的那一句的意思,先打印123456,如果打印不成功则后台执行输入密码stdin stu(i) ;

最后把输入的密码结果丢弃到 /dev/null,既然都丢弃到 /dev/null了,那为什么还要后台执行输入密码stdin stu(i) ?

我是刚接触这shell 编程的. 问题是RZ了点,还是请大家帮忙指点下。

#!/bin/bash
i=1
while[$i-le20]
do
    useradd stu$i
    echo "123456" | passwd --stdin stu$i &> /dev/null                /////////////
    i=`expr $i + 1`
done


最后还有个问题:

我发现现在的2440开发板的shell都基本是sh,都不用bash?仅仅是为了减少存储空间大小吗?

albert_w 发表于 2013-9-11 23:51:34

你这句问号直接把我这种菜鸟带沟里去了.
应该是把输出的123456用管道("|")传递给passwd命令作为其输入. 这句执行的输出扔到黑洞去, 不显示出来.


于似乎每个用户都有个一样的密码123456

yidehui 发表于 2013-9-12 08:43:47

albert_w 发表于 2013-9-11 23:51 static/image/common/back.gif
你这句问号直接把我这种菜鸟带沟里去了.
应该是把输出的123456用管道("|")传递给passwd命令作为其输入. 这 ...

我记得使用passwd输入密码的格式是

passwd 用户名, 然后字输入1234565

那么这里stdin stu$(i)前面怎么会有--符号。这是怎么回事?

albert_w 发表于 2013-9-12 08:50:07

yidehui 发表于 2013-9-12 08:43 static/image/common/back.gif
我记得使用passwd输入密码的格式是

passwd 用户名, 然后字输入1234565


对,默认是要输密码,可那样就没法跑脚本。于是有些平台支持参数stdin,从标准输入读取密码。因为多字符参数,一般就用--来开头。单字符参数一般-开头,比如ls -l
页: [1]
查看完整版本: 请教一条简单的linux指令!