is there any straight forward way to get the nth value of an indexed array with some unset element?
Não sem uma matriz temporária, penso:
a=([3]=2 [1]=12 [12]=4 [23]=5)
a_indices=("${!a[@]}")
third_element=${a[${a_indices[2]}]}
ou
a_normalized=("${a[@]}")
third_element=${a_normalized[2]}
Essa é uma herança ksh. ksh e bash são os únicos shells que eu sei onde os arrays são escassos (ou em outras palavras são arrays associativos com chaves limitadas a inteiros positivos e numericamente ordenados em suas chaves).
Os arrays de todos os outros shells que eu conheço (zsh, yash, fish, csh, tcsh, rc, es ...) são matrizes normais ( e com índices começando em 1 como um (pelo menos eu) esperaria, não 0).