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 [email protected] http://cnswww.cns.cwru.edu/~chet/