shell编程:将当前目录中文件msg中的内容发给当前所有的登录用户
时间: 2024-03-10 12:43:26 浏览: 20
可以使用以下shell脚本实现:
```
#!/bin/bash
# 获取当前登录用户
USERS=$(who | awk '{print $1}')
# 发送消息给每个用户
for USER in $USERS
do
echo "msg" | write $USER
done
```
将上述脚本保存为一个文件(例如send_msg.sh),然后在当前目录下执行该脚本即可。该脚本会获取当前登录的所有用户,并将当前目录中文件msg的内容发送给每个用户。注意,该脚本需要在root权限下执行才能正常发送消息。
相关问题
shell编程实现将当前目录中文件msg中的内容发送给当前所有的登录用户
您可以使用以下Shell脚本来实现此目的:
```
#!/bin/bash
# 获取当前登录用户列表
users=$(who | awk '{print $1}' | sort -u)
# 循环遍历登录用户列表,发送文件内容
for user in $users
do
echo "Sending msg file content to user $user..."
cat msg | write $user
done
```
这个脚本会首先获取当前所有登录用户的列表,然后循环遍历列表,将当前目录下的msg文件的内容发送给每个登录用户。您可以将此脚本保存为send_msg.sh,并使用chmod命令将其设置为可执行文件,然后在终端中运行它即可。
编写shell脚本,将当前目录文件msg中的内容发给当前所有的登录用户
可以编写一个名为 `send_msg.sh` 的 shell 脚本,内容如下:
```bash
#!/bin/bash
# 获取当前所有登录用户
users=$(who | awk '{print $1}')
# 读取文件msg中的内容
msg=$(cat msg)
# 发送消息给每个登录用户
for user in $users; do
echo "$msg" | write $user
done
```
这个脚本中,第一行 `#!/bin/bash` 表示使用 bash shell 来解释执行该脚本。接下来的第二行使用 `who` 命令获取当前所有登录用户的用户名,并使用 `awk` 命令从输出结果中提取出用户名。第四行使用 `cat` 命令读取文件 `msg` 中的内容,并将其赋值给变量 `msg`。接下来的 `for` 循环针对每个登录用户,使用 `write` 命令将文件 `msg` 中的内容发送给该用户。
要执行该脚本,需要给它执行权限,可以使用 `chmod +x send_msg.sh` 命令来赋予执行权限,然后使用 `./send_msg.sh` 命令来执行。需要确保在当前目录下存在文件 `msg`,且该文件中包含要发送的消息内容。