On 1/22/19 3:32 PM, Robert White wrote:
> Howdy,
> 
> The following cannot work because, for some reason, the array subscript
> parser insists on doing math on array indices even when the array is
> associative instead of numeric
> 
> typeset -A UUID_TABLE
> ...
> UUID_TABLE+=( [${SOME_UUID}]=${SOME_VALUE} )
> ...
> some_command ${UUID_TABLE[${SOME_UUID}]}
> 
> The parser and evaluator insist on doing math on ${SOME_UUID} no matter how
> its quoted or whatever. This seems extremely wrong.

I can't reproduce this. Given this script:

$ cat ./x18
typeset -A UUID_TABLE

while read SOME_UUID;
do
        SOME_VALUE=42
        UUID_TABLE+=( [${SOME_UUID}]=${SOME_VALUE} )

        echo \${\UUID_TABLE\[${SOME_UUID}]} '<-' ${UUID_TABLE[${SOME_UUID}]}
done < ./x18.in

for f in ${!UUID_TABLE[@]}
do
printf "<%s> <%s>\n" "$f" "${UUID_TABLE[$f]}"
done

where the input file contains a list of UUIDs, one per line, I don't
see any arithmetic evaluation taking place. In fact, the expression
evaluator is never called.

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

Reply via email to