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/