以用户名作为输入:如果用户已登录,则显示属于该用户的正在运行的进程

rum*_*nom 3 bash scripts users process

我想编写一个脚本,将用户名作为命令行输入。如果该用户已登录,则会显示该用户正在运行的进程。如果他/她没有登录,那么脚本应该提到这一点。

我的尝试不起作用:

#!/bin/bash
echo "Who are you?"
read user
echo $user
name=$(whoami)
if[$user == $name]
then
  top -u $user
else
  echo "not logged in"
fi
Run Code Online (Sandbox Code Playgroud)

jan*_*nos 5

您可以使用该who -u命令列出已登录的用户。然后您可以grep在输出中查找特定用户,如果找到则成功退出,否则失败退出。

#!/bin/bash

read -p 'Enter username to check: ' user
if who -u | grep -q "^$user "; then
    top -u "$user"
else
    echo "User $user is not logged in"
fi
Run Code Online (Sandbox Code Playgroud)

(感谢@dessert 缩短了这一who -u | ...部分!)