我寫了一個腳本,在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的。
有人可以幫我嗎?我不知道我做錯了什麼。