Shell Script 檢查系統帳號是否存在

在 Shell Script 想檢查系統帳號是否存在, 可以用 grep 搜索 /etc/passwd 的內容達成, 指令是這樣:

以上指令會檢查 /etc/passwd 檔案內, 是否有 “useraccount” 這個帳號存在, 其中 “^” 表示指定前面沒有任何字元, 而 “:” 則是在 /etc/passwd 用作分開每個欄位的分隔字元。

上面指令執行後, 如果帳號不存在, 不會回傳任何內容, 如果帳號存在, 則會回傳在 /etc/passwd 的相關紀錄, 例如:


useraccount:x:1001:1001::/home/useraccount:/bin/bash

要將上面的功能放到 Shell Script, 可以這樣寫:

第 3 行用了上面的 grep 指令, “>/dev/null 2>&1;” 是為了即使有匹配的行也不印出。第 5 行看到 $? 變數, 這個變數會儲存上一個執行的指令的 exit 0, grep 找到匹配紀錄的 exit code 是 0, 所以只要檢查 $? 是否 0, 便知道帳號是否存在。


Leave a Reply