Shell Script Error usando o Cygwin

0

Eu recebi este erro depois de executar o script shell como abaixo.

$ ./script_test.sh
./script_test.sh: line 3: syntax error near unexpected token '$'do\r''
'/script_test.sh: line 3: 'for ((j=0; j<"$N"; j++)) ; do

Script abaixo

#!/bin/sh

# This script will launch 10 simulations for each value of the PARAM1_LIST.
# Simulations results will be stored in folders named "myTest-i-j", where i
# is the effective value of the PARAM1_LIST for each simulation and j
# is the 1 to 10 repetition for each i.

N=10
PARAM1_LIST=(1 2 5 10)

for (( j = 0 ; j < $N; j++ )); do
for i in ${PARAM1_LIST[@]}; do
java -jar N3Sim.jar myConfigFile.cfg myTest-${i}-${j} $i
done
done
    
por leepyron 24.07.2013 / 10:06

3 respostas

0

Seu script contém novas linhas do DOS CR LF em vez das do Unix LF . $'\r' é uma sequência de escape bash para o caractere de controle CR , que não deve estar normalmente contido em arquivos de texto Unix. Foi no final da linha 3, que agora é a linha 11, já que você provavelmente adicionou a seqüência de shebang e comenta depois.

A solução é converter as novas linhas:

dos2unix script_test.sh

Observe também que o script está usando o constructo bash do array e o shebang deve ser #!/bin/bash .

    
por 24.07.2013 / 10:54
0

Você está usando recursos bash, mas usando um interpretador sh. Altere a linha shebang para #!/bin/bash

Para decompor:

$ /bin/sh
$ i=1
$ ((i++))
/bin/sh: i++: not found
    
por 24.07.2013 / 12:35
0

Outra solução possível usando o editor de texto unix vi:

abra o arquivo no vi edit com o comando vi filename.sh ;

digite no comando vi :set ff=unix ;

salve o arquivo com :wq

Ele salvará o arquivo com finais de linha unix.

    
por 06.05.2016 / 10:01