次のようなwhileループでプロセス置換のstdoutを使用しようとしています:
#!/bin/bash
FILE_1=f1.txt
FILE_2=f2.txt
while read LINE; do
echo "$LINE"
done < <(paste <(tail -f "$FILE_1") <(tail -f "$FILE_2"))
新しいデータがファイルに追加されるたびに、FILE_1 と FILE_2 の最後の行をマージすることになっています。もちろん、while ループで行を出力するだけではありませんが、これは良い例です。
残念ながら、このスクリプトを実行すると、ターミナルに留まって何もしません。
この行だけを実行します:
paste <(tail -f "$FILE_1") <(tail -f "$FILE_2")
完全に機能し、ファイルにデータを追加すると、端末に出力が表示されます。
stdout を別のプロセスにパイプするために使用する必要がある特別な構文はありますか?
やってみました
paste <(tail -f "$FILE_1") <(tail -f "$FILE_2") | while read LINE; do...
しかし、それはまだ端末に座っているだけです。