i=' expr $i+1 '
não está incrementando i
, atribui i
o valor de 'expr $ i + 1'.
Na próxima iteração do loop você executa [ $i -lt 100 ]
. Como i
não é incluído entre aspas duplas, isso se expande para [ expr '$i+1' -lt 100 ]
. [
é na verdade um comando, e você deu muitos argumentos devido ao motivo acima.
Se você substituir i=' expr $i+1 '
por i=$(($i + 1))
, seu código deverá funcionar.
Editar:
Parece que, pelo menos, o Bash terá problemas com o número 008, ele o interpreta como octal. Você precisa atribuir 00$i
, 0$i
e $i
a outra variável (ou echo "fla00$i"
etc) se ocorrer algum erro após 008.
Nesse caso, você precisará fazer algo quando i > = 100.
Isso é o que eu faria:
i=1
while [ $i -lt 121 ]; do
if [ $i -ge 100 ]; then
echo fla$i
elif [ $i -ge 10 ]; then
echo fla0$i
else
echo fla00$i
fi
i=$(($i + 1))
done