Essa coisa aqui
n=0
x=1
while [ $n -lt 6 ]
do
n=$(( n+1 ))
echo "sasadgsad gsda $n" >> /home/test/rptest
if [ $n -eq 5 ]
then
while [ $x -le 5 ]
do
echo "end of line$x" >> /home/test/rptest
x=$(( x+1 ))
done
fi
done
Saída essa coisa
sasadgsad gsda 1
sasadgsad gsda 2
sasadgsad gsda 3
sasadgsad gsda 4
sasadgsad gsda 5
end of line1
end of line2
end of line3
end of line4
end of line5
sasadgsad gsda 6
Essa 11ª linha não deveria estar lá... A primeira coisa enquanto não deveria terminar quando n = 5? Por que ele cria essa última linha?
Obrigado pela ajuda :)
Eu até tentei com n=1 e while [ $n -le 5 ]
Seu script com recuo adequado:
Seu loop externo vai de 0 a 5, que é seis vezes. Como você atualiza
n
no início do loop externo, o valor den
irá de 1 a 6 no corpo do loop. Quandon
é 5, você executa outro loop de 1 a 5 produzindoend of line...
. Quando isso for feito, você ainda terá uma iteração do loop externo para fazer.Outra maneira de escrever o script em
bash
:Isso não teria o mesmo problema porque o loop externo para quando
n
atinge 6.No entanto, se você quiser apenas anexar a saída do loop interno após o do externo, você também pode executar o após o outro:
ou, apenas para este exemplo simples,