如何在每次特定 GNU 屏幕发生变化时运行脚本?

如何在每次特定 GNU 屏幕发生变化时运行脚本?

我在通常分离的 GNU 屏幕中运行 Minecraft 服务器。我想做的是观看屏幕并在每次将某些内容打印到屏幕上时运行脚本(服务器程序经常这样做)。

这可能吗?如果是这样,怎么办?

答案1

您可以编写一个包装脚本:

#!/bin/sh
while IFS= read -r line
do
    printf '%s\n' "$line"
    # add your command/script here to be run on every new line printed
done < /dev/stdin

您可以通过将程序的输出通过管道传输到脚本来使用上面的脚本

例如,如果调用上面的脚本./wrapper.sh并且您的程序是prog

prog | ./wrapper.sh

请注意,如果某些内容通过 打印在标准错误中prog,则脚本不会处理它,除非您重定向它或单独处理 stderr。

相关内容