Renga Asked: 2022-05-08 09:39:31 +0800 CST2022-05-08 09:39:31 +0800 CST 2022-05-08 09:39:31 +0800 CST 如果用户不在系统中,则列出用户并返回非零退出代码 772 我需要找到一个用户,如果用户不在系统中,该命令应该以非零返回码退出。我们可以在 中执行此操作bash,但我需要将其作为行命令,而不是bash脚本。那可能吗? command-line users 1 个回答 Voted Best Answer Kusalananda 2022-05-08T09:59:31+08:002022-05-08T09:59:31+08:00 测试用户是否存在于系统中的一个好方法是使用getent. 该getent实用程序可以从各种“数据库”返回各种信息,例如,passwd“数据库”、group“数据库”,在某些系统上,您甚至可以要求getent列出可用的登录 shell。 要测试用户 ,testuser是否在系统中,请询问该用户getent的passwd条目: getent passwd testuser 如果此操作成功,您将获得一个passwd条目作为输出,并从getent. 如果失败,您将没有输出和非零退出状态。我相信这是您要求的命令。 我们可以丢弃该实用程序生成的任何输出并在if语句中使用它,如下所示: theuser=testuser if getent passwd "$theuser" >/dev/null then printf 'The user "%s" exists\n' "$theuser" else printf 'The user "%s" does not exist\n' "$theuser" fi 当然,您可以改为/etc/passwd使用某些grep命令直接解析文件,但这很容易出错(与getent上面所示的使用相比),并且在使用某种形式的目录服务的系统上也无法正常工作。
测试用户是否存在于系统中的一个好方法是使用
getent
. 该getent
实用程序可以从各种“数据库”返回各种信息,例如,passwd
“数据库”、group
“数据库”,在某些系统上,您甚至可以要求getent
列出可用的登录 shell。要测试用户 ,
testuser
是否在系统中,请询问该用户getent
的passwd
条目:如果此操作成功,您将获得一个
passwd
条目作为输出,并从getent
. 如果失败,您将没有输出和非零退出状态。我相信这是您要求的命令。我们可以丢弃该实用程序生成的任何输出并在
if
语句中使用它,如下所示:当然,您可以改为
/etc/passwd
使用某些grep
命令直接解析文件,但这很容易出错(与getent
上面所示的使用相比),并且在使用某种形式的目录服务的系统上也无法正常工作。