这里是计算同一登录用户的会话数。
如果我知道特定的用户名(例如usera),则可以运行直接命令,如下所示:
who | grep usera | wc -l
如果我不知道当前用户,则需要用户参数。 但是以下代码不起作用:
currentuser=`whoami`
sessionnumber=`who | grep "$currentuser" | wc -l`
怎么了?
谢谢!
答案 0 :(得分:2)
Grep具有-c
标志,因此不需要wc -l
加上其他管道。
who | grep -c -- "$USER"
"$LOGNAME"
也是代替"$USER"
的选项,哪个是bash特定的?我不知道,我所知道的是它们都在Linux
和FreeBSD
系统上。 --
只是一种习惯,in case
用户以破折号开头,grep不会将其解释为选项。
答案 1 :(得分:1)
sessionnumber=`who | grep "$currentuser" | wc -l`
您正在将who | ...
命令的结果分配给一个变量,要查看其值,可以使用echo $sessionnumber
答案 2 :(得分:0)
您似乎对参数和变量感到困惑。
您想要得到的可能是
who | grep $(whoami) | wc -l
$()
等效于您使用的反引号。
写作时
sessionnumber=``
这将运行反引号内的任何内容,并将输出保存到变量中。然后,您可以使用美元符号访问变量:
echo "$sessionnumber"