Bash has a neat way of giving all elements in an array except the first:
\"${a[@]:1}\"
To get all except the last I have found:<
I am not sure how much improvement it would be, but you can drop the arithmetic operator ($(())) and starting index (0 here):
$(())
0
${a[@]::${#a[@]}-1}
So:
$ foo=( 1 2 3 ) $ echo "${foo[@]::${#foo[@]}-1}" 1 2
As you can see, the improvement is purely syntactical; the idea remains the same.