【发布时间】:2017-02-27 16:36:18
【问题描述】:
我有一些这样的代码:
while true
do
who | cut -d' ' -f1 | sort | grep -v "erik" > "/home/erik/logintester/users.txt"
lines=$(< "/home/erik/logintester/users.txt" wc -l)
echo "$lines"
done
当有其他人登录时,它应该回显一个“1”,但我却得到了 1 和 0 的混合。有解决这个问题的方法吗?任何建议都非常感谢。
【问题讨论】:
-
在
wc -l错误的情况下提供users.txt的副本。虽然您应该真的使用mktemp来确保此脚本的每个副本都有自己的、唯一的临时文件副本(如果您要使用的话)。 -
如果你想要唯一的用户,你应该使用
sort -u。grep -v "erik"也是一个糟糕的正则表达式,因为它会过滤掉包括“erik”在内的其他用户,比如“erika”、“erikssen”等。你可能想用“^erik$”之类的东西进行 grep。 -
@vdavid 感谢您的建议!我会记住这一点的。