Web lists-archives.com

Pipe after Command Substitution does not resolve the substitution:


This is the first time i've ever submitted a bug report so i hope the
below is ok. I am not a programmer although i do do some scripting.

The below is the kind of 'command substitution then pipe' that i often
used in Cygwin on Windows 7.  Now that i've been forced to move to
Windows 10 it no longer seems to work. I'm assuming that this is not a
feature of an upgraded Bash but maybe i'm wrong, eg maybe we are now
supposed to put everything in variables rather than use command

Windows 10
bash 4.4.11(2) and 4.4.12(3)

$ set -xv

$ grep 2 $(ls | tail -1)
grep 2 $(ls | tail -1)
++ ls
++ tail -1
+ grep 2 test.txt

$ grep 2 $(ls | tail -1)  | grep 3
grep 2 $(ls | tail -1)  | grep 3
+ grep 3
+ grep 2

$ grep 2 `ls | tail -1` | grep 3
grep 2 `ls | tail -1` | grep 3
+ grep 3
+ grep 2

Would it be correct to conclude from the above output that once the
pipe is added then it is ignoring the substitution?

SPECULATION: i had wondered if the cause was a change in version of
bash but i cannot be sure what the version was that i was using on
Windows 7. I wish i had a record. I've tried this on both 4.4.11(2)
and 4.4.12(3). My instincts are that it is not, that it is Cygwin (or
more precisely bash.exe?) on Windows 10 instead. I have noticed other
differences / problems, eg arrow keys behaving oddly in vi, and
general sluggishness (but not tested yet).

Many thanks for any help and i hope this can contribute to keeping
Cygwin strong.

Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple