Jonathan Nieder <jrnie...@gmail.com> writes:

>> without failure (e.g. "cat" in the above example), which makes the
>> command appear to work, without eve executing the remainder of the
>
> s/eve/ever/

Oops.

>> +            if test "OK-117" != "$(test_eval_ "(exit 117) && 
>> $1${LF}${LF}echo OK-\$?" 3>&1)"
>> +            then
>> +                    error "bug in the test script: broken &&-chain or 
>> run-away HERE-DOC: $1"
>>              fi
>
> Neat.  Why the double-LF?

The main part of "Neat" was your invention ;-).

Imagining how the string passed to eval looked, having two LFs was
the easiest way to ensure that there is a blank line before the new
"echo" (not just the last line in $1 and "echo" are on different
lines), which was more visually pleasing.  There was no any real
functional requirement.

> In some shells, the 3>&1 will last past the function call.
> Fortunately, the $() substitution creates a subshell so this doesn't
> affect anything later on.

Yes, a subshell solves quite lot of problems (while possibly
introducing others, though ;-).

> test_eval_inner_ contains a warning not to append anything after the
> commands to be evaluated, since whatever you append would pollute -x
> tracing output.  Fortunately, in this context we have already set
> trace= so the warning does not apply.
>
>
> Reviewed-by: Jonathan Nieder <jrnie...@gmail.com>

Thanks.

Reply via email to