关于SHELL 的问题 求大神 解释

报这个错误是为什么?... 报这个错误 是为什么? 展开
 我来答
技术猿小黄
2014-03-19 · 分享科技资讯,做原创科技资讯解读
技术猿小黄
采纳数:111 获赞数:445

向TA提问 私信TA
展开全部

你的脚本写复杂了。看下我的

#!bin/bash
groupadd class1
for i in `seq 30`
do
if [ $i le 9 ];then
useradd -g class1 stu0$i
echo stu0$i | passwd --stdin stu0$i
else
useradd -g class1 stu$i
echo stu$i | passwd --stdin stu$i
fi
done


用useradd新建用户且指定基本组是默认会在家目录下建同名的目录,且属主是用户,属组是基本组

无忌男儿
2014-03-19
知道答主
回答量:10
采纳率:0%
帮助的人:8.3万
展开全部
1 - i没有初始。在while 前加一行: i=0
还有很多问题。
2 - i = $(($i+1 )) 这三个空格是什么意思?前两个会报错的。
3- 加那么多括号又是什么意思 ?

SHELL IS SHELL, NOT C OR D.
i=$(expr ${i} + 1)

4 - 没有缩进,没有美化。为什么不用emacs?
5 - 明显地你要学习怎么直接输出字符串 01 - 30, 而不是使用if.

6 - 结构相当混乱。
7 - 很多操作都没有判断,这样会有大问题。记得每个操作前都要进行判断。
8 - 加用户一个命令就搞定。chown/chgrp多余,即使用也不要加-R. 你这样搞如果那个用户已经存在了,那么$HOME里的文件属性都被你搞乱了。

总之,你还没有摸着门道,可能只是依着葫芦画个瓢,千万不要在生产系统上运行这些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cutroot
2014-03-18 · TA获得超过334个赞
知道答主
回答量:126
采纳率:0%
帮助的人:117万
展开全部
class1这个组已经存在了,再groupadd class1就报错.

i没有赋值,$i就是空,第三行相当于 while [ -le 30 ] ,-le左侧没有值,报错.
追问

还是报错 是不是我的赋值有问题?  

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沐枫溪林
2014-03-18 · 超过15用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:34.3万
展开全部
变量 i 没有初始值。
在 while 前面加上给 i 赋值的语句,比如 i=1, 等号两边不能有空格。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
折钰03H
2014-03-18 · 超过68用户采纳过TA的回答
知道答主
回答量:406
采纳率:0%
帮助的人:178万
展开全部
说了组已经存在了。这个很明显的。
如果学习linux的shell没有指导的话, 这个很难学好的哦
如果感兴趣的话, 可以交流 linux的shell编程问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式