Skip to content

需求

实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直接跟要发送的消息。 脚本需要检测用户是否登录在系统中,是否打开消息功能,以及当前发送的消息是否为空。

实现

sh
#!/bin/bash 
# 用户是否登录
# -i 表示忽略大小写
# -m 1 表示结果中最多只要一行
login_user=$(who | grep -i -m 1 $1 | awk '{print $1}')

# -z 判断字符串是否为空
if [ -z $login_user ]
then
        echo "$1 不在线"
        exit
fi

# 用户是否开启消息功能
is_open=$(who -T | grep -i -m 1 $1 | awk '{print $2}')

if [ $is_open != '+' ]
then
        echo "$1 没有开启消息功能"
        exit
fi

# 消息是否为空
if [ -z $2 ]
then
        echo "发送的消息不能为空"
        exit
fi

# 获取要发送的消息
whole_msg=$(echo $* | cut -d " " -f 2-)

# 获取用户登录的终端
user_terminal=$(who | grep -i -m 1 $1 | awk '{print $2}')

# 写入要发送的消息
echo $whole_msg | write $login_user $user_terminal

if [ $? != 0 ]
then
        echo "发送失败!"
else
        echo "发送成功!"
fi

exit