我正在编写一个shell脚本,用于查找文件“/etc/user.deny
”中的用户列表,如果多次遇到用户名,则程序会报告错误消息并退出。到目前为止,我有:
while read user
do
#something
done < ./etc/user.deny
如何比较每个人的每个用户名。有一种简单的方法可以做到这一点吗?
答案 0 :(得分:0)
如果您想要报告某个行多次显示,那么您可能只想单独使用awk 'seen[$0]++ {print "seen more than once: ", $0; exit}' file
:
seen[]
在数组print
中,我们存储每行出现的次数。如果出现多次,则会触发exit
和GetSales
语句。否则,它会默默地完成。
答案 1 :(得分:0)
我认为他想杀死所有重复登录
#!/bin/bash
#creat a sorted list
who -u | sort -k1,5 -r > userlogins.txt
#
user=""
olduser=""
# read userlist
cat userlogins.txt | while read line; do
# [0] of array is the username
# [1] is terminal
# [3] is login date
# [4] is PID
user=($line)
# echo ${user[0]}
#
# kill terminal if user has more than one login
if [$olduser = ${user[0]}]; then
echo ${user[0]} duplicate
pkill -t ${user[1]}
fi
# remember old user
olduser="${user[0]}"
done
不幸的是,我目前无法测试此脚本。