Vamos dar uma simples for loop
#!/bin/bash
for i in `seq 1 10`;
do
echo $i
done
O ponto-e-vírgula AFAIK nos scripts bash faz com que o shell execute o comando atual de forma síncrona e depois vá para o próximo. Pressionar enter faz literalmente o mesmo, exceto que não permite que você insira o comando a seguir, liberando o buffer imediatamente.
Então, por que o shell não pode interpretar a seguinte linha
for i in `seq 1 10`; do; echo $i; done
como isso for loop
realmente funciona?
do
.do
. Além disso, esta resposta explica por que você deve remover o ponto e vírgula após o `do '.$i
precisar fazer parte de um nome de arquivo? Precisa de aspas duplas?O ponto e vírgula após
do
é um erro e não deve estar lá.O seguinte funciona corretamente:
fonte