First let me start with a note that I'm not in any way related to git project -- just made an observation in my Linux distribution of choice which has mksh as /bin/sh.
Anyway I did some checking and made two observations: 1. Looking at the expression in a simplified form: OUT=$( ((echo foo; echo $? 1>&3) | :) 3>&1 ) && echo "$OUT" isn't it supposed to echo only 0? Both mksh R51 and R52 echo foo and 0, bash echoes 0, zsh echoes nothing. Three shells, three different results. 2. In original command large_git produces lots of output to stdout, which as described above lands in $OUT both in R51 and R52, but here's the awkward difference between the two: OUT="diff --git" test "$OUT" -eq 141 && echo equals || echo not equals R51: equals R52: not equals Looks like R51 passed git tests only by accident. -- You received this bug notification because you are a member of mksh Mailing List, which is subscribed to mksh. Matching subscriptions: mkshlist-to-mksh-bugmail https://bugs.launchpad.net/bugs/1532621 Title: Tests in git-2.7.0 fail with mksh R52 Status in mksh: New Bug description: Newly released git version 2.7.0 fails to pass tests with most recent release of mksh -- test t0005-signals.sh fails on case 4 and 5: 4: OUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) && test "$OUT" -eq 141 5: OUT=$( ((trap "" PIPE; large_git; echo $? 1>&3) | :) 3>&1 ) && test "$OUT" -eq 141 Note that everything works perfectly fine with R51 and ie bash. To manage notifications about this bug go to: https://bugs.launchpad.net/mksh/+bug/1532621/+subscriptions