Error de variable de bucle en bucle for

10

Cuando estoy usando como

 for i in 1 2 3 4 5 

entonces mi archivo contiene #!/bin/shen la parte superior.

Pero cuando estoy usando

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

entonces está mostrando error

Syntax error: Bad for loop variable

y funcionando correctamente cuando elimino shebang. Por favor dime la razón detrás de esto.

Gaurav Rai
fuente

Respuestas:

11

for(( i = 0; i<=5; i++))es específico de Bash y no funciona con el shell Bourne simple ( /bin/sh).

Si elimina el shebang, la secuencia de comandos la ejecuta su shell actual (que probablemente sea Bash) para que funcione.

Reemplace #!/bin/shcon #!/bin/bashpara hacer que el shebang funcione.

Florian Diesch
fuente
¿Hay alguna manera de hacerlo en shmodo? ¡Gracias!
Ziyaddin Sadigov
2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch
1
Ya uso #bash y no funciona
BG Bruno
2
for(( i = 0; i<=5; i++))

para este tipo de bucle solo se ejecuta en el shell Bash. entonces, si quieres ejecutar esto, entonces prueba este comando:

$bash filename.sh

Creo que funcionará bien. y mira este también.

Sudip Das
fuente
1

He resuelto este problema usando ./ en lugar del comando sh. Por ejemplo, si pones sh test.shen su lugar solo haz tu comando como ./test.shY lo más probable es que el problema se resuelva.

dilantha111
fuente
0

Pruebe esto puede ser esto podría resolver su 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
fuente