useradd 可以交互工作,但在 bash 脚本中不行

useradd 可以交互工作,但在 bash 脚本中不行

我正在尝试自动创建用户帐户。

该脚本中的命令在 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:点

GNU Coreutils:列出了哪些信息

-l,--format=long,--format=verbose

...

文件模式位后面是一个字符,用于指定是否对文件应用备用访问方法(例如访问控制列表)。当文件模式位后面的字符是空格时,表示没有备用访问方法。当它是打印字符时,表示有备用访问方法。

GNU ls 使用“。”字符来指示具有安全上下文的文件,但没有其他替代访问方法。

具有任何其他替代访问方法组合的文件都标有“+”字符。

相关内容