evgeny <[email protected]> writes:

> expecting success: 
>         OUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) &&
>         test "$OUT" -eq 141
>
> t0005-signals.sh[499]: eval: syntax error at line 4: `(' unmatched
> Memory fault

Does this work if you did

        OUT=$( ( (large_git ; echo $? 1>&3) | : ) 3>&2 ) &&

instead?

> 'man ksh' reads:
>   (list)
>     Execute  list  in  a  separate environment.
>     Note, that if two adjacent open parentheses are needed for nesting,
>     a space must be inserted to avoid evaluation as an arithmetic command as
>     described above.

Hmm, I cannot see "as described above" in your message, but isn't
that talking about a common mistake of turning cmd1 in this pipeline

        x=$(cmd1 | cmd2)

into a series of two commands, e.g. (cmd1a && cmd1b) and saying

        x=$((cmd1a && cmd1b) | cmd2)

which does make "$((" interpreted as the beginning of arithmetic
expansion?

And the "OUT=$( ((large..." construct seems to be written in order
to avoid that exact issue (notice the SP after "$(").

Puzzled....

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to