Command-Line

如果使用者不在系統中,則列出使用者並返回非零退出程式碼

  • May 7, 2022

我需要找到一個使用者,如果使用者不在系統中,該命令應該以非零返回碼退出。我們可以在 中執行此操作bash,但我需要將其作為行命令,而不是bash腳本。那可能嗎?

測試使用者是否存在於系統中的一個好方法是使用getent. 該getent實用程序可以從各種“數據庫”返回各種資訊,例如,passwd“數據庫”、group“數據庫”,在某些系統上,您甚至可以要求getent列出可用的登錄 shell。

要測試使用者 ,testuser是否在系統中,請詢問該使用者getentpasswd條目:

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上面所示的使用相比),並且在使用某種形式的目錄服務的系統上也無法正常工作。

引用自:https://unix.stackexchange.com/questions/701779