我正在尝试使用进程替换来避免使用临时文件。我尝试了以下方法:
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中完成相同的工作。
感谢。
答案 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