/etc/passwd
ループを使用して、1000以上のUIDからユーザー名を取得しようとしていますfor
。以下の簡単なスクリプトはbash
機能しますが、何らかの理由でユーザー名を2回印刷します。
#!/bin/bash
for userid in `awk -F: '{print $3}' /etc/passwd`
do
if (("$userid" >= 1000)); then
echo "Valid User" :`cat /etc/passwd | grep $userid | awk -F: '{print $1,$3}'`
fi
done
答え1
この試み、
awk -F ':' '$3>=1000 {print "Valid User :"$1","$3}' /etc/passwd
おそらく1000や10001などのユーザーIDがあるかもしれません。したがって、forループで繰り返すと、grepは重複を引き起こします。
次のように試す
echo "Valid User" :`cat /etc/passwd | grep ":$userid:" | awk -F: '{print $1,$3}'`