These bugs affect the development branch only.

1. `wait -n' doesn't work inside nofork command substitution. I think
it should, or wait without `-n' shouldn't work either, or what works
and what doesn't should be documented.

    $ sleep 3 & sleep 1; echo ${| wait -n -p REPLY;}
    [1] 433

    $
    [1]+  Done                    sleep 3
    $


2. Sending a signal other than SIGTERM to an asynchronous process
created inside nofork command substitution kills the parent shell.
This should not happen.

    $ trap uname EXIT
    $ : ${ dd if=/dev/zero of=/dev/null &}; sleep 1; kill -USR1 %
    4730333+0 records in
    4730333+0 records out
    2421930496 bytes (2.4 GB, 2.3 GiB) copied, 1.00056 s, 2.4 GB/s
    Linux
    User defined signal 1
    $

There are other cases where the parent shell exits unexpectedly, such
as when the exec command fails inside nofork command substitution, but
I'm not sure if those are bugs or intended behavior.


3. Linking REPLY to a variable inside nofork command substitution
renders the target variable unset. I don't think this should be the
case; and if it has to, it should be documented.

    $ x=y
    $ echo ${| declare -n REPLY=x;}
    y
    $ declare -p x
    bash: declare: x: not found
    $

Reply via email to