Re: t0005-signals.sh fails with ksh
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 8, 2015, 20:34 UTC
- Message-ID
- <xmqq1tiqkdue.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <31108626.20150508231514@gmail.com>
evgeny <illumsoft.org@gmail.com> writes:
Show 6 quoted lines
> 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 faultDoes this work if you did
OUT=$( ( (large_git ; echo $? 1>&3) | : ) 3>&2 ) &&
instead?
Show 6 quoted lines
> '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....