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.

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.


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.