Você não pode modificar a variável dentro do ciclo for
como este em bash
. Ah ... você pode, mas isso não afetará as iterações. Não é contado loop como podemos ser usados para a partir de C.
Exemplo mínimo:
#!/bin/bash
for i in {1..3}
do
echo $i
i=$((i-1))
echo $i
done
obviamente imprime:
./b.sh
1
0
2
1
3
2
É melhor você estar com loop padrão com condição (como proposto por Kusalananda):
#!/bin/bash
i=0
while ((i++ < 3)); do
echo $i
# your code here
#i=$((i-1))
#echo $i
done
Deixando também a antiga proposta abaixo, mas o texto acima é claramente melhor.
Você seria melhor com loop infinito e cuidaria de sua própria variável dentro, se quiser modificar a quantidade de execuções. Algo como isso deve fazer o trabalho (no exemplo incremento de 2, caso contrário nunca terminaria):
#!/bin/bash
i=1
while true; do
if [[ $i > "3" ]]; then
break
fi
echo $i
i=$((i-1))
echo $i
i=$((i+2))
done