Когда я использую для
for i in 1 2 3 4 5
, то мой файл содержит #!/bin/sh
вверху.
Но когда я использую
for(( i = 0; i<=5; i++))
, то это показывает ошибку
Syntax error: Bad for loop variable
и работает правильно, когда я удаляю Шебанг. Пожалуйста, расскажите мне причину этого.
for(( i = 0; i<=5; i++))
специфичен для Bash и не работает с обычной оболочкой Bourne (/bin/sh
).
Если вы удалите шебанг, скрипт будет запущен вашей текущей оболочкой (которая, вероятно, является Bash), поэтому он будет работать.
Замените #!/bin/sh
на #!/bin/bash
, чтобы заставить Шебанга работать.
for(( i = 0; i<=5; i++))
для этого типа цикла работает только на оболочке Bash. Итак, если вы хотите запустить это, попробуйте эту команду:
$bash filename.sh
Я думаю, что она будет работать нормально. и см. этот также.
Я решил эту проблему, используя ./ вместо команды sh. Например, если вместо этого поставить sh test.sh
, просто введите команду как ./test.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