我在通常分离的 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。