Is there a step of arithmetic expansion [with array subscripts], just like when interpreting a command with arithmetic expansion?
Sim.
Expansão variável:
$ unset -v a
$ declare -p a
-bash: declare: a: not found
$ x=4
$ a[x]=4
$ declare -p a
declare -a a='([4]="4")'
Expansão de parâmetros:
$ six=six
$ a[${#six}]=3
$ declare -p a
declare -a a='([3]="3" [4]="4")'
Substituição de comandos:
$ a[$(echo 9)]=9
$ declare -p a
declare -a a='([3]="3" [4]="4" [9]="9")'
Citar a remoção:
$ a["5"]=5
$ declare -p a
declare -a a='([3]="3" [4]="4" [5]="5" [9]="9")'
$ a['6']=6
$ declare -p a
declare -a a='([3]="3" [4]="4" [5]="5" [6]="6" [9]="9")'
$ a[]=7
$ declare -p a
declare -a a='([3]="3" [4]="4" [5]="5" [6]="6" [7]="7" [9]="9")'
3.5.5 Arithmetic Expansion
All tokens in the expression undergo parameter and variable expansion, command substitution, and quote removal.