Is it possible to mimic process substitution on msys /mingw (with bash 3.x)

馋奶兔 提交于 2019-12-22 17:36:10

问题


I am trying to use process substitution to avoid using temporary files. I tried the following:

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

on mingw32/msys (from http://www.mingw.org/ as of Dec 2013), and got:

sh: syntax error near unexpected token `('

Running the same thing on Ubuntu 12.04 returns:

1c1
< a
---
> b

The msys I use probably has bash 3.1. I was wondering if it is possible to work around the issue so that the same job can be done in msys/older bash without using temporary files.

Thanks.


回答1:


I mananed to do process substitution in bash 3.x. The syntax is correct. It is supported by bash shell. So I would suggest to check what shell your are running and execute somiting like:

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

Process substitution is not a POSIX compliant feature. To enable try to run:

set +o posix

See also this for more info.

The other way is to use named pipes. I tested on GNU bash version 4.1.2(1):

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

See Working with Named Pipes



来源:https://stackoverflow.com/questions/20866832/is-it-possible-to-mimic-process-substitution-on-msys-mingw-with-bash-3-x

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!