Bash For loop não funciona

1

Estou tentando executar este script bash simples, mas estou recebendo um erro de sintaxe. Eu segui esta documentação simples aqui link mas sem sorte. Não tenho certeza do que estou fazendo de errado?

#!/bin/bash
for i in 1 2 3 4 5
do
    echo "Count $i"
done;

erro:

setup.sh: 3: setup.sh: Syntax error: word unexpected (expecting "do")

Estou executando esse script do meu Windows Subsystem Linux (WSL) aqui.

    
por Aftab Naveed 26.04.2018 / 14:56

3 respostas

8

Seu arquivo de script é um arquivo de texto do DOS. O retorno extra de carro no final de cada linha confunde bash (ele vê do\r em vez de do ).

Converta-o para um arquivo de texto Unix usando uma ferramenta como dos2unix ou certifique-se de que seu editor o salve como um arquivo de texto Unix.

    
por 26.04.2018 / 15:03
0

Acabei de executar o mesmo script na minha máquina centos que funciona como arquivo. Como sugerido por Kusalananda, converta o arquivo de script de dos para unix. instale o pacote dos2unix se você não o tiver instalado já. Então você pode usar o comando abaixo para converter $ dos2unix (nome do arquivo)

    
por 26.04.2018 / 15:14
0
#!/bin/bash
for i in 1 2 3 4 5
do
    echo "Count $i"
done;

Uma maneira melhor de fazer um loop seria:

for i in {1..5}; do
    echo "Count $i";
done

Dessa forma, você não precisa especificar todos esses números. Então, o que você faria se tivesse que percorrer 100 números usando o método?

    
por 26.04.2018 / 17:21