Bash 连接stdin和命令的输出

Bash 连接stdin和命令的输出,bash,shell,Bash,Shell,我想从stdin中读取,然后将stdin和它的转换版本连接起来。例如,连接stdin和它的反面,后者由rev命令转换 输入:你好 输出hello\nolleh 如何通过一条衬里管道实现这一点?例如: echo hello | tee >(rev) >是bash进程替换。因此,tee写入子shell的stdin,在其中执行rev。rev然后将相反的内容写入stdout。tee还向stdout写入未更改的stdin。如果您有/proc文件系统,您可以执行以下操作: { echo hello

我想从stdin中读取,然后将stdin和它的转换版本连接起来。例如,连接stdin和它的反面,后者由rev命令转换

输入:你好

输出hello\nolleh

如何通过一条衬里管道实现这一点?

例如:

echo hello | tee >(rev)

>是bash进程替换。因此,tee写入子shell的stdin,在其中执行rev。rev然后将相反的内容写入stdout。tee还向stdout写入未更改的stdin。

如果您有/proc文件系统,您可以执行以下操作:

{ echo hello | tee /proc/self/fd/3 | rev; } 3>&1
您可以使用读取循环从stdin读取

echo hello | while read s; do echo -e "$s\n$(rev <<< "$s")"; done
或者没有循环:

read s < <(echo hello); echo -e "$s\n$(rev <<< "$s")"

谢谢,非常有效。你能给我解释一下吗?我以前从未使用过tee。@WonderCsabo:tee将stdin复制到stdout,即将输入作为输出传递,同时允许在一个文件或多个文件中捕获相同的输入-请参阅man tee。在本案中,>。。。充当伪输出文件;附带的命令通过标准输入法接收数据。