我有一个 .deb 包,其中有一个 preinst 脚本,当系统中不存在某个用户时,该脚本会执行 adduser 程序。
$(id -u {username} > /dev/null 2>&1)
if [ $? -eq 1 ];
then
echo "Adding user"
$(adduser --group {groupname})
$(adduser --disabled-password --ingroup {groupname} --no-create-home --system {username})
fi
exit 0
当 preinst 脚本作为安装过程的一部分运行时,用户和组会按应有的方式创建,但我看到来自 adduser 命令的以下奇怪的输出行:
Adding user
/var/lib/dpkg/tmp.ci/preinst: 12: /var/lib/dpkg/tmp.ci/preinst: Adding: not found
/var/lib/dpkg/tmp.ci/preinst: 13: /var/lib/dpkg/tmp.ci/preinst: Adding: not found
这些线是什么意思?我应该解决吗?
答案1
因为你这样做了,$(adduser ..)
而不是简单地adduser ..
应用命令替换并且该行将替换为该命令的输出。因此,如果adduser
产生输出Adding user ...
,则 shell 将尝试将其Adding user ...
作为命令执行。相反,请执行以下操作:
id -u ${username} > /dev/null 2>&1
if [ $? -eq 1 ];
then
echo "Adding user"
adduser --group ${groupname}
adduser --disabled-password --ingroup ${groupname} --no-create-home --system ${username}
fi
exit 0