Erro de variável de loop no loop for

10

Quando eu estou usando como

 for i in 1 2 3 4 5 

então meu arquivo contém #!/bin/shna parte superior.

Mas quando estou usando

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

então está mostrando erro

Syntax error: Bad for loop variable

e funcionando corretamente quando removo o shebang. Por favor, diga-me o motivo por trás disso.

Gaurav Rai
fonte

Respostas:

11

for(( i = 0; i<=5; i++))é específico do Bash e não funciona com shell Bourne simples ( /bin/sh).

Se você remover o shebang, o script será executado pelo seu shell atual (que provavelmente é o Bash), para que funcione.

Substitua #!/bin/shpor #!/bin/bashpara fazer o shebang funcionar.

Florian Diesch
fonte
Existe alguma maneira de fazer isso no shmodo? Obrigado!
Ziyaddin Sadigov
2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch
1
Eu uso #bash já e não funciona
BG de Bruno
2
for(( i = 0; i<=5; i++))

para esse tipo de loop é executado apenas no shell Bash. então, se você deseja executar isso, tente este comando:

$bash filename.sh

Eu acho que vai funcionar bem. e veja este também.

Sudip Das
fonte
1

Eu resolvi esse problema usando o comando ./ em vez do sh. Por exemplo, se você colocar sh test.shapenas faça seu comando como ./test.shE provavelmente o problema será resolvido.

dilantha111
fonte
0

Experimente, pode ser que isso possa resolver seu problema

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