bash-4.3$ a=([9223372036854775806]=1 2 3 4)
bash-4.3$ echo "${!a[@]}"
-9223372036854775808 -9223372036854775807 9223372036854775806
9223372036854775807
That wraps but as signed longs, which means we get negative
indexes which we can't easily use.
bash-4.3$ echo "${a[@]}"
3 4 1 2
bash-4.3$ for i in "${!a[@]}"; do echo "${a[i]}"; done
1
2
bash-4.3$ echo "${a[-1]}"
2
bash-4.3$ echo "${a[-2]}"
1
bash-4.3$ echo "${a[-3]}"
bash-4.3$ echo "${a[-4]}"
bash-4.3$ echo "${a[@]:0:4}"
1 2
bash-4.3$ echo "${a[@]: -1:1}"
bash-4.3$ echo "${a[@]: -4:1}"
Same with a[9223372036854775807]; a+=(1 2 3)
mksh wraps to 0 at 2^32 and ksh93 at 2^22 (!?).
zsh arrays are not sparse.
--
Stephane