从 preinst 脚本调用 adduser 时会出现奇怪的消息

从 preinst 脚本调用 adduser 时会出现奇怪的消息

我有一个 .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

相关内容