Você está chamando o comando [
com os operadores de comparação de número inteiro -lt
/ -gt
em operandos que nem sempre são inteiros decimais.
Você pode ver o que acontece se você executar o script com bash -x
. Você verá coisas como:
+ f=
+ '[' '' -gt 0 ']'
./myscript: line 15: [: : integer expression expected
Com:
while [ "$i" -lt "$n" ]
do
[...]
d=${array[$i+1]}
Na última passagem desse loop, você tentará acessar além do último elemento da matriz, então $d
estará vazio.
Você também está inicializando $b
como uma string 0 e, mais tarde, acessando-a como uma matriz. Veja também como f=${b[$j]}
obterá um $f
vazio, exceto quando $j
for 0.
Eu não sei o que você está tentando fazer com esse código, mas parece que você precisa voltar para a prancheta.