Bash 在两个程序之间交换stdout和stdin

Bash 在两个程序之间交换stdout和stdin,bash,stdout,stdin,Bash,Stdout,Stdin,我想为特定的命令编写自动化程序,所以我需要让它们在执行期间交换stdout和stdin 让我解释一下,如果有一个命令同时执行两个程序 # cmd1 (pipe or redirection something) cmd2 cmd1将stdout作为stdin发送到cmd2,然后cmd2将stdout作为stdin发送到cmd1 用户收到的输出应该是cmd1的输出。如何实现这一点?我认为您可以使用FIFO文件来实现这一点 FIFO文件允许您命名管道。您可以创建两个命名管道,一个用于cmd1 |

我想为特定的命令编写自动化程序,所以我需要让它们在执行期间交换stdout和stdin

让我解释一下,如果有一个命令同时执行两个程序

# cmd1 (pipe or redirection something) cmd2
cmd1
将stdout作为stdin发送到
cmd2
,然后
cmd2
将stdout作为stdin发送到
cmd1


用户收到的输出应该是
cmd1
的输出。如何实现这一点?

我认为您可以使用FIFO文件来实现这一点


FIFO文件允许您命名管道。您可以创建两个命名管道,一个用于cmd1 | cmd2,另一个用于cmd2 | cmd1。

管道应该可以工作。您能否显示cmd1和cmd2中不起作用的代码?@AlexStiff在Linux上,管道不是双向的(但在某些系统上,例如Solaris和BSD上)。我认为相反,使用将是一个更好、更便携的解决方案。另外,请注意,对于unix.stackexchange.com,我认为这是一个更好的问题。@我可以在cmd2上处理来自cmd1的所有标准输出,但我不能将来自cmd2的标准输出发送到cmd1。@jnevil我明白了,谢谢!这是JNevill提到的。