erro de sintaxe próximo ao token inesperado 'do

1

Eu tenho um erro de "erro de sintaxe próximo ao token inesperado do", usando um loop for em um .sh. Aqui está o código:

#!/bin/sh

# some code

for flux in $(ls -d /home/eai/*/*/*) ; do
  FICHIER=$(ls -p -tr $flux | grep -v / | head -n 1)
  if [[ $FICHIER ]] ; then
     # some code
  fi
done

Diferentes maneiras de executar o script e a saída:

1) sh script.sh ou bash script.sh

'cript_1409.sh: line 24: syntax error near unexpected token 'do
'cript_1409.sh: line 24: 'for flux in $(ls -d /home/eai/*/*/*); do

2) ./script.sh

-bash: ./script_1409.sh: /bin/sh^M: bad interpreter: No such file or directory

O que eu tentei:

1) Use uma sintaxe diferente para o loop.

for flux in $(ls -d /home/eai/*/*/*) ; do
  FICHIER=$(ls -p -tr $flux | grep -v / | head -n 1)
  if [[ $FICHIER ]] ; then
     # some code
  fi
) &
done

ou

for flux in $(ls -d /home/eai/*/*/*)
do
  FICHIER=$(ls -p -tr $flux | grep -v / | head -n 1)
    if [[ $FICHIER ]] ; then
      # some code
    fi
done

2) Mude o #! / bin / sh para #! / bin / bash.

3) Mude a extensão .sh para .bash e repita todos os comandos de execução acima mencionados.

    
por Flyout 05.09.2017 / 16:14

1 resposta

3

Seu script é DOS codificado e sh / bash não gosta disso. Instale dos2unix e execute

dos2unix <script>

no seu script. E corra de novo.

    
por 05.09.2017 / 16:19