我的整个任务听起来像这样“显示现在有多少用户正在工作,每当有人注销或登录时,打印新的用户数量。创建一个新屏幕并打印文本结果”。对于第一部分,我已经处理得很好了。这是代码:
#!/bin/bash
updateusers(){
log=$( who | grep "st" | awk '{print $1}' | wc -l);
}
updateusers
temp=$log
echo "Now logged users: $lrn"
while true
do
updateusers
if [ $temp -lt $log ]; then
temp=$log
echo "User has logged in : $log"
fi
if [ $temp -gt $log ]; then
temp=$log
echo "User has logged out: $log"
fi
sleep 1
done
第二个任务是在脚本内创建第二个屏幕并将文本从此脚本打印到其中。我用过screen -S name -p 0 -X stuff "text here/echo command with text"
和echo text > screen -S name -p 0
。这些都不适合我。
答案1
您必须将脚本的输出(各种echo
命令)重定向到临时文件,然后cat
使用该临时文件名作为参数在屏幕内执行命令。就像是
myreport >foo
screen -S name -X stuff "cat foo"
rm foo
(尽管有更优雅的方法来创建临时文件,例如mktemp
)。第一步,使您的报告脚本成为一个函数(或单独的文件)将允许重定向其输出。