在 bash 中重定向和标记化标准输出

redirect and tokenize stdout in bash

我想找到一种方法将 bash 的标准输出重定向到接受字符串的命令,例如 espeak。我最初想使用 coproc,但只有当 bash 不时发送一个 EOF(希望在像换行符这样的好时机)时才有效。如何将交互式进程的标准输出(即流 I/O)标记为一系列字符串?感觉 expect 可以处理,但也感觉问题可以等效地表述为 "How do I write an interactive shell?"

假设您希望一次将一行发送到 espeak,您可以将输出通过管道传输到 xargs 或使用 shell.

读取它
command | xargs -d '\n' -n 1 espeak

(请参阅 以及为什么这些论点而不是其他论点的评论,尽管这些担忧在这里并不适用)

command | while IFS= read -r line; do espeak "$line"; done