我写了一个脚本,在Debian上创建一个系统用户帐户,一个smb帐户和一个afp帐户(Netatalk)服务器。除了-c参数的useradd命令之外,大部分工作都很好。它被引用。我认为这是主要问题。我做了一些研究,发现如何在引号中保留引号,但是我所有的尝试都是由错误代码2产生的,并以useradd命令的使用提示结束。带引号参数的system-user,smb-user和netatalk-user的Bash脚本
我设法调用外壳上
useradd -m -d /home/username -p abcDEFghiJKLm -c "Full Name" -g users username
和我所得到的是错误代码2和useradd的命令的用法消息这条线。
Usage: useradd [options] LOGIN
useradd -D
<...>
这是我创建系统用户的函数。
AddSystemUser() {
echo "Adding system user"
myArgs="-p $cryptPass"
if [ "$fullName" != "" ]
then
myArgs="$myArgs -c \"$fullName\""
fi
if [ "$userGroup" != "" ]
then
myArgs="$myArgs -g $userGroup"
fi
if [ "$userGroups" != "" ]
then
myArgs="$myArgs -G $userGroups"
fi
doUserAdd="useradd -m -d /home/$userName $myArgs $userName"
#echo $doUserAdd
$doUserAdd
myResultCode=$?
if [ $myResultCode -ne 0 ]
then
echo "Adding system user failed with error code $myResultCode"
exit $(($myResultCode + 100))
fi
}
正如你看到的,我在这个地方加上双引号,所以我可以在外壳上使用语法-c完全\名称。
我也尝试了方法,无需添加引号的脚本,但外壳上类似-c““全名”'具有相同的结果输入其中:中用法消息useradd的。
有人可以帮我吗?我不知道我做错了什么。