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.

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.


¿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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.