Я получил эту ошибку после выполнения сценария оболочки, как показано ниже.

$ ./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

Сценарий ниже

#!/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

3 ответа3

0

Еще одно возможное решение с использованием текстового редактора Unix vi:

открыть файл в редакторе vi с помощью команды vi filename.sh ;

введите в vi :set ff=unix command;

сохранить файл с помощью :wq

Это сохранит файл с окончанием строки Unix.

0

Ваш скрипт содержит новые строки DOS CR LF вместо Unix LF . $'\r' - это управляющая последовательность bash для управляющего символа CR которая обычно не должна содержаться в текстовых файлах Unix. Это было в конце строки 3, которая теперь является строкой 11, поскольку вы, вероятно, добавили последовательность Шебанга и комментарии позже.

Решение состоит в том, чтобы преобразовать переводы строки:

dos2unix script_test.sh

Также обратите внимание, что скрипт использует bash-конструкцию массива, а шебанг должен быть #!/bin/bash .

0

Вы используете функции bash, но используете интерпретатор sh. Измените строку Шебанга на #!/bin/bash

Разложить:

$ /bin/sh
$ i=1
$ ((i++))
/bin/sh: i++: not found

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .