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