• Jueves 25 de Abril de 2024, 19:12

Autor Tema:  Obtener Tipo De Variable  (Leído 1969 veces)

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Obtener Tipo De Variable
« en: Viernes 2 de Marzo de 2007, 20:16 »
0
Que tal amigos, tengo una consulta.
utilizando el interprete con esta linea "#!/bin/sh", se podra obtener el tipo de una variable? osea saber si la variable es de tipo numerico, entero.

resulta que estoy tomando una variable pero el contenido que esa variable apana puede variar de entero a numerico  "1" --- "1.0"
ya que las comparaciones varian depende el tipo
si es numerico seria
Código: Text
  1. if test "$var" -eq "1.0"
  2.  
si es entero seria
Código: Text
  1. if "$var" -eq "1"
  2.  
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Obtener Tipo De Variable
« Respuesta #1 en: Viernes 2 de Marzo de 2007, 21:08 »
0
Hmmm.... Bash no soporta decimales, tienes que usar bc.

Ademas, eso de test no hace falta... seria mejor

Código: Text
  1. if [ "$entero" -gt 0 and "$entero" -lt 5 ]; then
  2.   echo "$entero es mayor a 0 y menor a 5";
  3. fi
  4.  
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Obtener Tipo De Variable
« Respuesta #2 en: Viernes 2 de Marzo de 2007, 21:48 »
0
Bueno la forma que lo solucione es utilizando un df -a y siempre obtengo un valor entero.

Bueno con lo que dice que el test no era necesario creo que si lo era ya que el test te permite hacer comparaciones numericas lo estaba haciendo de esta forma
Código: Text
  1. if test [ "$var" -eq "1.5"]
  2.  

el problema venia cuando el resultado era entero por lo tanto tuve que cambiar de -h a -a
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Obtener Tipo De Variable
« Respuesta #3 en: Viernes 2 de Marzo de 2007, 23:19 »
0
Pues si, pero de la otra forma que tenias no se puede usar decimales.

Resulta que -eq y todo eso es heredado de test y por eso dije que no era necesario  ;)

Solo que test es usado (mas que todo) para chequear tipos de archivo (inodos, dispositivos, fechas, bloques, characteres...)

dc es lo mas viable y se nota cuando usas let.

Pero si ya lo arreglaste... que mas da.  :P
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Obtener Tipo De Variable
« Respuesta #4 en: Viernes 2 de Marzo de 2007, 23:47 »
0
ok, su aparte de solucionar un problema tambien es aprender y comprender las cosas para que no sean mecanicas :smartass:  ,  asi que te agradezco tus respuestas. aparte de que no sabia que eran heredados de test.  

 :D
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Obtener Tipo De Variable
« Respuesta #5 en: Sábado 3 de Marzo de 2007, 00:52 »
0
No hay problema, recuerda que hay mas de una manera de hacer las cosas, lo dificil es saber cual es la mejor aunque en este caso todas dos estan bien. (bc o sin bc)

Si quieres hacer calculos como Pi y valores similares si es mejor que uses bc (fuera de eso te haria las cosas mas facil)
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.