Bash
if 語句查詢 etc/passwd 中的使用者 ID?
使用 bash 我試圖查詢
/etc/passwd
任何 id 超過 1000 的使用者。如果他們存在做某事,否則做其他事情。我難住了。任何幫助表示讚賞。if [ "$(id -u)" -gt "1000" </etc/passwd]; then do something else do something else fi
要在
bash
循環中做到這一點,我建議使用read
和IFS
喜歡:#!/usr/bin/env bash while IFS=':' read -r user passwd uid gid comment home shell; do if [ "$uid" -gt 1000 ] ; then echo GT $user else echo LT $user fi done < /etc/passwd
/etc/passwd
您應該使用,而不是直接閱讀,getent passwd
如果您的一些使用者保存在 LDAP 之類的東西中,這也將起作用。awk
應該非常適合以冒號分隔的輸出格式。這將列印 UID > 1000 的所有使用者的使用者名:
getent passwd | awk -F: '$3 > 1000 {print $1}'
found
如果至少找到一個這樣的,這只會列印:getent passwd | awk -F: '$3 > 1000 {print "found"; exit}'