Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: bilbo en 23 Septiembre 2019, 16:51 pm



Título: Ayuda con código Bash
Publicado por: bilbo en 23 Septiembre 2019, 16:51 pm
Hola, buenas. Me estoy adentrando en esto del scripting en batch y aún soy muy novato y seguro que el problema que tengo es una tontería, pero no logro dar con él. Estoy haciendo un código que hace que introduzcas un número y después te imprima por consola la tabla de multiplicar de ese número, pero hay algo que no me sale y no se por qué.

Este es el código
Código
  1. @echo off
  2. echo Bienvenido
  3. set /p n= Introduce un numero
  4.  
  5. for %%x in ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ) do (
  6. set /a z= %n% * %%x
  7. echo %z%
  8. )
  9. pause

Este es el fallo que da

(https://i.ibb.co/7nGB1sX/2.png) (https://ibb.co/8rjG710)



Título: Re: Ayuda con código Bash
Publicado por: EdePC en 23 Septiembre 2019, 18:12 pm
Saludos,

- Primero, no confundir Bash de Linux con Batch de Windows.

- Segundo, recuerda que tienes la ayuda del mismo CMD, utilizando por ejemplo:

Código
  1. Set /?

- En la ayuda muestra que Batch tiene una deficiencia en la actualización de variables dentro de bucles For, estos no se actualizan hasta que el bucle finalice. Para actualizar variables dentro de los bucles puedes usar EnableDelayedEspansion y cambiar %z% por !z!

-- He puesto solo a en lugar de %a% en el Set /a, ya que cuando se usa Set /a no es necesario encerrar a las variables entre %, Set /a siempre intentará resolver cualquier valor no numérico que tenga que operar ya que está hecho para operar números y no debería haber texto a no ser que sean nombres de variables.

Código
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. echo Bienvenido
  4. set /p n="Introduce un numero: "
  5.  
  6. for %%x in ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ) do (
  7. set /a z= n * %%x
  8. echo !z!
  9. )
  10.  

Citar
Bienvenido
Introduce un numero: 7
7
14
21
28
35
42
49
56
63
70
Presione una tecla para continuar . . .

- Referencias: https://ss64.com/nt/delayedexpansion.html


Título: Re: Ayuda con código Bash
Publicado por: bilbo en 23 Septiembre 2019, 19:37 pm
Perfecto, gracias.