私は通常、別の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
何かがstderrとして印刷されると、prog
それをリダイレクトするかstderrを別々に処理しない限り、スクリプトはそれを処理しません。