Bash

if 語句查詢 etc/passwd 中的使用者 ID?

  • March 26, 2017

使用 bash 我試圖查詢/etc/passwd任何 id 超過 1000 的使用者。如果他們存在做某事,否則做其他事情。我難住了。任何幫助表示讚賞。

if [ "$(id -u)" -gt "1000" </etc/passwd]; then
   do something
else
   do something else
fi

要在bash循環中做到這一點,我建議使用readIFS喜歡:

#!/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}'

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