Ошибка переменной цикла в цикле for

Когда я использую для

 for i in 1 2 3 4 5 

, то мой файл содержит #!/bin/sh вверху.

Но когда я использую

for(( i = 0; i<=5; i++))

, то это показывает ошибку

Syntax error: Bad for loop variable

и работает правильно, когда я удаляю Шебанг. Пожалуйста, расскажите мне причину этого.

8
задан 6 January 2014 в 15:58

4 ответа

for(( i = 0; i<=5; i++)) специфичен для Bash и не работает с обычной оболочкой Bourne (/bin/sh).

Если вы удалите шебанг, скрипт будет запущен вашей текущей оболочкой (которая, вероятно, является Bash), поэтому он будет работать.

Замените #!/bin/sh на #!/bin/bash, чтобы заставить Шебанга работать.

0
ответ дан 6 January 2014 в 15:58
for(( i = 0; i<=5; i++))

для этого типа цикла работает только на оболочке Bash. Итак, если вы хотите запустить это, попробуйте эту команду:

$bash filename.sh

Я думаю, что она будет работать нормально. и см. этот также.

0
ответ дан 6 January 2014 в 15:58

Я решил эту проблему, используя ./ вместо команды sh. Например, если вместо этого поставить sh test.sh, просто введите команду как ./test.sh, и, скорее всего, проблема будет решена.

0
ответ дан 6 January 2014 в 15:58

Попробуйте, может быть, это решит вашу проблему

#!/bin/bash
j=0
for (( i=1; i <= 5; i++ ))
do
 echo "the loop is runing $i time: and value of j is $j"
 j=`expr $j + 1`
done
0
ответ дан 6 January 2014 в 15:58

Другие вопросы по тегам:

Похожие вопросы: