OS X で tail -F の出力をパイプする方法は?

OS X で tail -F の出力をパイプする方法は?

最近、Ubuntu から OS X に移行したのですが、「tail」コマンドの動作が異なっていることに気づきました。

Ubuntuでは実行できました

tail -f xyzzy.log | espeak

(たとえば、IRC で何が起こっているかをコンピューターに読み上げてもらうなど)

しかしOS Xでは

tail -F xyzzy.log | say

(同等であると予想していましたが)結果は生成されません。

おそらくこれは、パイプが tail の完全な出力を say に送信しようとしているが、tail が (-f 付きで) 継続的に実行されているため、プロセスの最後に到達することはなく、出力が say に渡されないためです。正直なところ、私がこれを正しく理解していれば、この動作は Ubuntu での動作よりも理にかなっています。ただし、あまり役に立たないだけです。

では、同じ結果を達成できる別の方法はありますか? (そして、なぜこれが起こるのかという私の推測は正しいでしょうか?)

答え1

見るhttps://apple.stackexchange.com/questions/9673/how-to-correctly-pipe-output-into-say-in-terminalこれは示唆する

 tail -f xyzzy.log | while read line ; do echo $line | say ; done

関連情報