Bash脚本说找不到命令

时间:2012-10-03 20:46:16

标签: bash centos

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

3 个答案:

答案 0 :(得分:1)

您可能需要设置PATH,并且您真的应该阅读advanced bash scripting guide。另请参阅this answer

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

您的系统可能无法使用groupadd

答案 1 :(得分:1)

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

答案 2 :(得分:-1)

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

将useradd更改为/ usr / sbin / useradd

将groupadd更改为/ usr / sbin / groupadd

将治愈未找到的命令。

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