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

10

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

 for i in 1 2 3 4 5 

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

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

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

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

Syntax error: Bad for loop variable

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

Гаурав Рай
источник

Ответы:

11

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

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

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

Флориан Диш
источник
Есть ли способ сделать это в shрежиме? Спасибо!
Зияддин Садыгов
2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Флориан Диш
1
Я использую #bash уже и не работает
BG Bruno
2
for(( i = 0; i<=5; i++))

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

$bash filename.sh

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

Судип Дас
источник
1

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

dilantha111
источник
0

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

#!/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
smn_onrocks
источник