Bash 脚本显示找不到命令



我尝试运行以下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

错误消息是由等号周围的空格引起的。解释为命令名称后带有空格的标记;因此,您想要作为变量名称的内容会导致Command not found错误。

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

我还建议通过以 #!/bin/bash -vx 作为第一行启动来调试脚本。而且您至少应该使用它chmod u+x使其可执行。

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

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

将 useradd 更改为/usr/sbin/useradd

将 groupAdd 更改为/usr/sbin/groupadd

将修复未找到的命令。

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

相关内容

  • 没有找到相关文章

最新更新