Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Bug?从两个进程替换中获取标准输出_Bash - Fatal编程技术网

Bash Bug?从两个进程替换中获取标准输出

Bash Bug?从两个进程替换中获取标准输出,bash,Bash,对于特定的shell脚本,我需要一个类似以下简化示例的功能: { replies=`echo output > >(cat >&3; echo reply1) 2> >(cat >&2; echo reply2)` ;} 3>&1 很明显,我希望$reply类似于reply1 reply2,但“第二个”流从未进入变量,而是在STDOUT中出现: output reply2 $ echo $replies reply1 这可能

对于特定的shell脚本,我需要一个类似以下简化示例的功能:

{ replies=`echo output > >(cat >&3; echo reply1) 2> >(cat >&2; echo reply2)` ;} 3>&1
很明显,我希望
$reply
类似于
reply1 reply2
,但“第二个”流从未进入变量,而是在STDOUT中出现:

output
reply2
$ echo $replies 
reply1

这可能是一个错误或限制,我如何解决它?

交换重定向顺序修复了“问题”:


示例中的“问题”是当
cat>&2;执行echo reply2
时,标准输出已重定向到
>(cat>&3;echo reply1)
。因此,
echo reply2
的输出转到
cat>&3

我实际上认为我在不久前测试过,但它不起作用。。。但很明显我错了,这对我来说很好。也谢谢你的解释,我现在甚至明白为什么会这样。
$ { replies=$(echo output  2> >(cat >&2; echo reply2) > >(cat >&3; echo reply1)); } 3>&1
output
$ echo $replies
reply1 reply2