integer i
i=1
Simples i=1
sem espaços é suficiente.
if [ -z == $response ]
then
continue
fi
continue
significa ignorar tudo no loop que vem após continue
e ir para a próxima iteração do loop. Eu não acho que é isso que você pretendia fazer.
if [ $response == "q" ]
É uma prática recomendada incluir nomes de variáveis entre aspas duplas ( "$response"
) ao fazer referência.
i=$i+1
Isso atribuirá 1+1
como uma string a $i
em vez de 2
. Você pode usar
expr
:
i=$(expr $i + 1)
ou simplesmente use:
(( i++ ))
Seu roteiro final ficará parecido com isto:
#!/bin/bash
i=1
while true
do
read response
if [ "$response" == "q" ]
then
break
fi
if [ -f /var/tmp/UE1_${i}.txt ]
then
cat /var/tmp/UE1_${i}.txt
i=$(expr $i + 1)
fi
if [ $i -eq 100 ]
then
break
fi
done
Para obter mais informações sobre a verificação de scripts do bash, este excelente tutorial: Guia avançado de script de script .