Command-Line
如果使用者不在系統中,則列出使用者並返回非零退出程式碼
我需要找到一個使用者,如果使用者不在系統中,該命令應該以非零返回碼退出。我們可以在 中執行此操作
bash
,但我需要將其作為行命令,而不是bash
腳本。那可能嗎?
測試使用者是否存在於系統中的一個好方法是使用
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
上面所示的使用相比),並且在使用某種形式的目錄服務的系統上也無法正常工作。