是否可以模仿msys / mingw上的进程替换(使用bash 3.x)

时间:2014-01-01 08:23:35

标签: bash shell mingw msys

我正在尝试使用进程替换来避免使用临时文件。我尝试了以下方法:

diff <(echo "a") <(echo "b")

on mingw32 / msys(截至2013年12月来自http://www.mingw.org/),并得到:

sh: syntax error near unexpected token `('

在Ubuntu 12.04上运行相同的东西会返回:

1c1
< a
---
> b

我使用的msys可能有bash 3.1。我想知道是否可以解决这个问题,以便在不使用临时文件的情况下在msys / old bash中完成相同的工作。

感谢。

1 个答案:

答案 0 :(得分:2)

我管理过在bash 3.x中进行进程替换。语法是正确的。它由bash shell支持。所以我建议检查你正在运行的shell,并执行如下的呕吐:

/bin/bash diff <(echo "a") <(echo "b")

进程替换不是POSIX兼容的功能。要启用尝试运行:

set +o posix

有关详细信息,另请参阅this

另一种方法是使用命名管道。我测试了GNU bash版本4.1.2(1):

diff - p <<< "test" & echo "test2" > p

请参阅使用Named Pipes