Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: macshivi en 30 Octubre 2016, 23:14 pm



Título: Problema al igualar una variable a 0 en bash [solucionado]
Publicado por: macshivi en 30 Octubre 2016, 23:14 pm
El problema esta en la linea 22, abajo entro en mas detalle en mi problema.
Código
  1. echo Este programa nos generara un numero aleatorio y nosotros tendremos 5 intentos para descubrirlo.
  2. echo 'Escribe la opción que deseas:'
  3. echo 'a)Jugar.'
  4. echo 'b)Salir.'
  5. read opc
  6.  
  7. case $opc in
  8. 'a')
  9. #Declaracion de nombre aleatorio en un rango comprendido entre 0 y 100.
  10. n=$((RANDOM%100+0))
  11. #Este echo esta puesto para comprobar los posibles resultados
  12. echo $n
  13.  
  14. #Bucle del juego, el cual acabara cuando los ints sea 0 o n1 sea igual a la variable random (en este caso int se igualrà a 0)
  15.  
  16. ints=5
  17. until [ "$ints" -eq 0 ]; do
  18. ((ints=$ints-1))
  19. echo 'Escribe un numero comprendido entre 0 y 100:'
  20. read n1
  21. if [ $n1 -eq $n ]; then
  22. (( $ints= $ints - $ints )) #Esta es la linea que me da error, me sale el siguiente mensaje:
  23.        #((: 4= 4 - 4 : se intentó asignar a algo que no es una variable (el elemento de error es "= 4 - 4 ")
  24.        #me sale el mismo error  al hacer '$ints=0'
  25.  
  26. echo 'El numero es correcto, has ganado, felicidades.'
  27.  
  28. else if [ $n1 -gt $n ]; then
  29.               echo 'El numero que has marcado es mayor.'
  30.       else echo 'El numero que has marcado es menor.'
  31.   fi
  32. fi
  33. done
  34.  
  35. ;;
  36. 'b')
  37. echo Fin del programa
  38. ;;
  39. esac

Cuando ejecuto el programa la linea que esta despues del primer 'if' la cual hace que el bucle finalice me sale error y sigue continuando hasta que el contador(ints) es 0.

(http://imageshack.com/a/img923/6084/OXRJKg.png)


Gracias por vuestra atencion


EDIT:
Al final he modificado el codigo así y funciona:
Código
  1. until [ "$ints" -eq 0 ]; do
  2.  
  3. echo 'Escribe un numero comprendido entre 0 y 100:'
  4. read n1
  5. if [ $n1 -eq $n ]; then
  6. echo El numero es correcto, has ganado, felicidades.
  7. ((ints=$ints-$ints))
  8. else if [ $n1 -gt $n ]; then echo El numero que has marcado es mayor.
  9. ((ints=$ints-1))
  10. else echo El numero que has marcado es menor.
  11. ((ints=$ints-1))
  12.   fi
  13. fi
  14. done