On 10/10/15 8:09 PM, isabella parakiss wrote:
> $ a= read a <<< x       # this creates a variable in the current shell
> $ declare -p a
> declare -- a="x"
> 
> $ b= mapfile b <<< x    # this doesn't
> $ declare -p b
> bash: declare: b: not found
> 
> 
> Other shells don't seem to agree on what should happen in this case, but
> it'd be nice to have a more consistent behavior.

This isn't exactly a consistent example.  The `read' example uses a scalar
variable that's found in the temporary environment, which it promotes to a
global variable, whereas the mapfile example attempts to convert a
temporary variable to an array.  If you used a consistent example, such as

        a= read -a a <<< x

you would find that the two builtins behave identically.

I will see if it's reasonable to promote a variable found in the temporary
environment to an array variable in the current scope.

Chet
-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU    c...@case.edu    http://cnswww.cns.cwru.edu/~chet/

Reply via email to