Bash脚本说找不到命令

Bash脚本说找不到命令,bash,centos,Bash,Centos,我尝试运行下面的bash脚本来创建一组用户、组、用户的主目录以及所有这些的正确权限。操作系统是CentOS 当我尝试运行以下我认为应该可以工作的程序时,它在通过终端运行时返回“commandnotfound”。它只创建了/homedirs目录,仅此而已。我完全不懂bash脚本,所以如果这看起来很难看,请原谅我 mkdir /homedirs; chmod 775 /homedirs; for iYear in {1..3} do sYear = $iYear"ti" sYear

我尝试运行下面的bash脚本来创建一组用户、组、用户的主目录以及所有这些的正确权限。操作系统是CentOS

当我尝试运行以下我认为应该可以工作的程序时,它在通过终端运行时返回“commandnotfound”。它只创建了/homedirs目录,仅此而已。我完全不懂bash脚本,所以如果这看起来很难看,请原谅我

mkdir /homedirs; chmod 775 /homedirs;

for iYear in {1..3} do
    sYear = $iYear"ti"
    sYearDir = "/homerirs/"$sYear
    groupadd $sYear; mkdir $sYearDir; chgrp $sYear $sYearDir; chmod 750 $sYearDir

    for sClass in {a,b} do
        sClassDir = $sYearDir/$sClass
        mkdir $sClassDir
        sClassGrp = $sYear$sClass
        groupadd $sClassGrp; chgrp $sClassGrp $sClassDir; chmod 750 $sClassDir

        for iUser in {1..3} do
            sUserName = "i"$iYear$sClass"g"$iUser
            sUserDir = $sClassDir/$sUserName
            useradd -d $sUserDir -g $sClassGrp -G $sYear -m $sUserName
            chown $sUserName $sUserDir; chmod 750 $sUserDir
        done
    done
done

您可能需要设置
路径
,您确实应该阅读。另见

我还建议用
#开始调试脚本/bin/bash-vx
作为第一行。您应该至少使用
chmod u+x
使其可执行


可能
groupadd
在您的系统上不可用。

错误消息是由等号周围的空格引起的。在被解释为命令名后带有空格的标记;因此,您打算用作变量名的内容会导致
命令未找到
错误。

最好的做法是在可执行文件之前添加完整路径:

将useradd更改为/usr/sbin/useradd

将groupadd更改为/usr/sbin/groupadd

将修复未找到的命令


请记住,此程序可能需要以root用户身份运行。

对于。。。在里面do,用分号分隔流控制语句和
do
block?@raina77ow可能是。我对语法还是不太熟悉。事实上,我认为应该是,来想想它。编辑:这并没有解决问题…
对于iYear在1-2-3;对于a b中的sClass,执行
;do
不仅更短,而且更便于携带。您可能还需要修复
homerirs
的拼写。@raina77ow:+1是的,您确实需要分号。我还使其可执行。。。Groupadd可用。好的,我无法从终端运行它,这与我之前的想法相反。除了chmod u+x,我还需要做什么?-1不,不要那样做。设置一个sane
路径
一次,不要硬编码命令路径名。感谢以root用户身份运行的提示,我不知道是否有必要,但还是这样做了。你能告诉我如何使用这些用户登录吗?如您所见,没有指定密码,但登录屏幕或终端要求我输入密码。当我将其留空时,会出现身份验证失败…您可能应该传入一个带有
useradd
选项的密码。要更改现有用户的密码,请以root用户身份运行
passwd$user
。。。。或者安装一个合适的SSH公钥,并让它们保持无密码。我真的不明白你的意思。老师(是的,这是给学校的)刚让我们写这个脚本,他说不要用useradd输入密码。去年我们对unix的介绍很差……如果只是为了演示,您可以使用
su-$user
访问帐户。通常,无法登录的(非系统)帐户是无用的。您必须拥有密码或其他身份验证方法,如SSH密钥对。Kerberos在一些组织中也很流行。