用于指定用户登录到计算机的Shell脚本

用于指定用户登录到计算机的Shell脚本,shell,Shell,我需要在代码中集成第二个参数,允许用户指定脚本在什么时候检查谁登录。我现在把它设置为60秒,这需要是默认频率。我试图使用另一个功能,但没有用。我想到了这样的事情 username=$1 freq=$2 checkuser() { if who grep "$1" then sleep 60 fi } if [ -n "$1" ] then echo "Enter username" read username checkuser echo -e "$1 is logged o

我需要在代码中集成第二个参数,允许用户指定脚本在什么时候检查谁登录。我现在把它设置为60秒,这需要是默认频率。我试图使用另一个功能,但没有用。我想到了这样的事情

username=$1
freq=$2

checkuser()
{
  if who grep "$1"
  then
  sleep 60
  fi
}

if [ -n "$1" ]
then
echo "Enter username"
read username
checkuser
echo -e "$1 is logged on \a"
echo -e "$1 logged in at `date`">>LOG
checkuser
else
echo "User is not logged on"
fi
谢谢威廉的帮助!!我对代码做了一点修改,然后想出了这个。我现在需要添加第三个参数“X”,当选中它时,它只向日志文件而不是屏幕发送消息。我做了一次尝试,但没有按计划做

if [ "$2" -ne 0 ]
then
freq=$2
else
freq=60
还请注意,您可以简化用户名的设置:

username=$1
freq=${2:-60} # Set a default frequency

checkuser(){ who | grep -q "$1"; }

while ! checkuser "$username"; do
    echo "User is not logged on"    
    sleep $freq
done
echo "$1 is logged on"

一个简单的shell脚本,以用户名作为输入,并确定用户当前是否登录

echo 'Enter id'
read id
res=`who | grep "$id" | wc -l` 
if [ $res -eq 0 ]
then
    echo 'user is not logged in'
else
    echo 'user is logged in'
fi
username=${1:-$( echo "Enter username: "; read u; echo $u; )}
echo 'Enter id'
read id
res=`who | grep "$id" | wc -l` 
if [ $res -eq 0 ]
then
    echo 'user is not logged in'
else
    echo 'user is logged in'
fi
if [[ $# -eq 0 ]]; then
    echo "Usage: " $0 "username"
    exit 1
fi

result="$(who | grep $1 | wc -l)"

if [[ $result -gt 0 ]]; then
    echo "$1 is currently logged in"
else
    echo "$1 is not logged in"
fi

exit 0