Ошибка переменной цикла в цикле 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И, скорее всего, проблема будет решена.


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.