script seguro

Forums: 

Saludos

Acabo de crear un script que consiste en adivinar un numero secreto.


#!/bin/bash

numero=512

read -p "Ingrese un numero: " entrada

while [ $numero -ne $entrada ]
do
if [ $entrada -lt $numero ]
then
echo "Numero equivocado; el numero secreto es mayor"
else
echo "Numero equivocado; el numero secreto es menor"
fi
read -p "Ingrese un numero: " entrada
done
echo "Numero correcto ¡¡¡¡¡¡¡¡GANASTEEEE!!!!!!!!"

Pero me surgio un problema y es q al ingresar una letra o un caracter especial el script saca un error y a su vez saca el mensaje de numero correcto.


root@debian:~# ./while.sh
Ingrese un numero: l.
./while.sh: line 7: [: l.: integer expression expected
Numero correcto ¡¡¡¡¡¡¡¡GANASTEEEE!!!!!!!!

Entonces necesito saber como poner la condicion para q solo acepte numeros y saque error al ingresar letras o caracteres especiales.

De antemano muchas gracias...

Para validar que lo que

Imagen de deathUser

Para validar que lo que entre sea un número puedes usar algo como:

if eval expr ${entrada} + 1 > /dev/null 2>&1; then echo bien; else echo mal; fi

Esto dirá "bien", si va variable "$entrada" es un número, caso contrario dirá "mal", así ya no le pasarás un parámetro que no sea numérico al if...

bye
:)