0

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

当我尝试运行以下,虽然我应该工作,它通过终端运行时返回“找不到命令”。它只涉及创建 /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
4

3 回答 3

1

您可能需要设置您的PATH并且您确实应该阅读高级 bash 脚本指南。另请参阅此答案

#!/bin/bash -vx我还建议通过将其作为第一行来调试您的脚本。chmod u+x你应该至少让它可执行。

也许groupadd您的系统上可能不可用。

于 2012-10-03T20:48:34.003 回答
1

错误消息是由等号周围的空格引起的。后面带有空格的记号被解释为命令名;所以你打算作为变量名的东西会导致Command not found错误。

于 2012-10-03T21:02:31.160 回答
-1

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

将 useradd 更改为 /usr/sbin/useradd

将 groupadd 更改为 /usr/sbin/groupadd

将治愈未找到的命令。

请记住,这些程序可能需要以 root 身份运行才能工作。

于 2012-10-03T21:05:48.727 回答