我正在尝试自动创建用户帐户。
该脚本中的命令在 bash shell 中可以很好地交互运行,但是当我运行该 bash 脚本时,它会失败并且我得到返回 2,这代表invalid command syntax
根据 useradd 手册页。
该脚本还会在执行命令之前打印出该命令,因此,如果我简单地复制/粘贴该输出(不带"cmd-->"
),它就可以起作用。
例如,cmd-->useradd bidwbre -m -c "Brent Bidwel" -G students
这是简短的脚本:
#!/bin/bash
while read id fn ln pw
do
echo "cmd-->useradd $id -m -c \"$fn $ln\" -G students"
useradd $id -m -c \"$fn $ln\" -G students
echo $?
# chmod go-rx /home/$id
# echo "$id:$pw" | chpasswd
echo ""
done
我正在以 root 身份登录运行此程序,这是该文件的权限。
-rwxr-x---. 1 root root 1339 Aug 2 14:58 rh_make_accts.sh*
我在这里遗漏了什么?
Red Hat 7.3 企业 Linux
附言:有点不相关,但既然我已经问过了:权限末尾的长目录列表中的末尾句点是什么?我以前没见过 - 特定于 RH?
答案1
删除该行上的两个反斜杠useradd
,换句话说,不要转义引号。
useradd $id -m -c "$fn $ln" -G students
PS:点
-l,--format=long,--format=verbose
...
文件模式位后面是一个字符,用于指定是否对文件应用备用访问方法(例如访问控制列表)。当文件模式位后面的字符是空格时,表示没有备用访问方法。当它是打印字符时,表示有备用访问方法。
GNU ls 使用“。”字符来指示具有安全上下文的文件,但没有其他替代访问方法。
具有任何其他替代访问方法组合的文件都标有“+”字符。