在 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
我想找到一种方法将 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