Hello, I'd like to ask, if the behavior of indexed array assignment using the form: 'array[${#arr...@]}]=' is as expected. I tested bash versions 3.1.17 and 4.0.35. Using v3.1 an explicitly declared non array variable (global or local) results in an empty array[0] entry. Using v4.0 the explicitly declared local non array variable results in an array containing only the last value assigned to the array at index array[1].
See test script and output below. Thank you for time and interest. Best regards Mart #----------------------------------- # TEST SCRIPT - /tmp/arr_t fill() { for x in $str; do arr[${#a...@]}]="$x" done for x in ${!a...@]}; do printf "%s: %s\n" "$x" "${arr[x]}" done unset arr echo } func() { echo ${FUNCNAME}: fill } func1() { echo ${FUNCNAME}: local -a arr fill } func2() { echo ${FUNCNAME}: local arr fill } str="a b c" fill declare -a arr fill declare arr fill func func1 func2 #----------------------------------- eris:~# bash --version GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu) eris:~# bash /tmp/arr_t 0: a 1: b 2: c 0: a 1: b 2: c 0: 1: a 2: b 3: c func: 0: a 1: b 2: c func1: 0: a 1: b 2: c func2: 0: 1: a 2: b 3: c eris:~# bash4 --version GNU bash, version 4.0.35(1)-release (i686-pc-linux-gnu) eris:~# bash4 /tmp/arr_t 0: a 1: b 2: c 0: a 1: b 2: c 0: a 1: b 2: c func: 0: a 1: b 2: c func1: 0: a 1: b 2: c func2: 1: c