我尝试运行以下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
答案 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身份运行才能工作。