В вашем примере кода i - это значение, а не индекс.
Вам понадобится восклицательный знак для использования переменной значение как переменная.
Я не смог заставить (i + 1) работать без определения другой переменной. Может, кто-нибудь подскажет, как это оптимизировать.
check () {
for i in $(seq $#); do
let j=i+1
echo "$i: i=${!i} i+1=${!j}"
done
}
check a b c
1: i=a i+1=b
2: i=b i+1=c
3: i=c i+1=