ayuda script

hola, la cosa es que tengo que hacer un script y pasarle como parametro un numero, pero tengo que proteger de que se le mande un numero y no una palabra, hay alguna opcion del test que me diga si es un numero(algo asi como la -d que dice que es un directorio)
gracias
ya busque en el man y no encontre, gracias de todas formas
la unica manera que se me ocurrio es "jugando" con la variable ?
Escrito originalmente por zuper
ya busque en el man y no encontre, gracias de todas formas
la unica manera que se me ocurrio es "jugando" con la variable ?


Chequear eso no es tan directo, y podria ser una buena pregunta en un examen. ;) (bash es un lenguaje no tipificado)

La expresiones matematicas en bash si son validas devuelven su resultado y si son invalidas devuelven cero.

Ejemplo:

A=sergio
B=6

echo $(( $A )) -> dara como resultado 0

echo $(( $B )) -> dara como resultado 6

Sabiendo eso, chequear si una variable es numerica o no lo unico que tienes que hacer es evaluarla y si te da cero sabes que es una letra.

salu2[bye]
joder que movidas... yo no sabia nada de eso
Si estás obligado a trabajar en sh, no te será tan fácil comprobarlo como ha dicho sergiox.

Es posible que tuvieras que preguntar por todos los números antes de seguir con la ejecución del script.
¿Y si es un número y es 0?

Jeje....

Salu2.Ferdy
Escrito originalmente por Ferdy
¿Y si es un número y es 0?

Jeje....

Salu2.Ferdy


Pues nada... solamente sale una pantalla azul de la muerte.

[qmparto][qmparto]

No, de veras, antes de hacer todo eso habria que comprobar si la variable contiene el numero 0 (if $A = 0) y luego sino lo contiene, haces lo de la expresion .

Igual eso lo incluyes en la version XP, la version normal del script no lo trae.

salu2[bye]
pues al final en clase se nos ocurrio otra manera

digamos
A=4
[ $A -le 0 ]
$?
case $? in
0) #si es 0 es un numero negativo
1) #es positivo
mayor ) #sera una cadena de caracteres

la verdad nos tuvo que ayudar el profe pa sacar esto y disfruto con nuestra ignorancia, por eso queria saber alguna otra manera para devolverle la jugada aunque sea con trampas [666]
8 respuestas