Ошибка переменной цикла для цикла

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

for i in 1 2 3 4 5 

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

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

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

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

 Syntax error: Bad for loop variable 

и работает должным образом, когда я удаляю shebang. Пожалуйста, объясните мне причину этого.

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

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

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

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

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

 $bash filename.sh 

Думаю, все будет хорошо. и посмотрим на это .

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

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

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