I noticed an error coming out of a script when I tried to check an array's size w/unbound var checking enabled
(note my=declare, array='my -a') First w/bash-4.3.42:
bash # try in subshell in case '-u' exits array gv_ops=() echo ${#gv_ops[@]} # existing var
0
echo ${#gv_ops2[@]:-0} # non-existing var (seems to work) 0 set -u # now add an undefined check echo ${#gv_ops[@]:-0} # empty array still shows '0'
0
echo ${#gv_ops2[@]:-0} # try w/non-existing array
-bash: gv_ops2: unbound variable # doesn't work ---- w/bash 4.4:
array gv_ops=() echo ${#gv_ops[@]:-0}
bash: ${#gv_ops[@]:-0}: bad substitution
echo ${#gv_ops2[@]:-0}
bash: ${#gv_ops2[@]:-0}: bad substitution ok, so 4.4 is telling me its a bad substitution while 4.3 hid that, but fails when the array doesn't exist. So I see that it doesn't work in 4.3 or 4.4... so what does? I.e. - How do I display catch an undefined array and have it display a known value? Thanks! -linda