esa forma de sacar aleatorio esta bien, pero la que yo tengo tambien esta bien, el problema creo que esta en la implementacion del algoritmo. aqui os dejo el nuevo ejercicios que yo he confeccionado, es igual que el anterior, pero le he añadido algunas condiciones al while.
otra forma de generar el aleatorio la he dejado comentada y utiliza la proporcionada por Leo.
espero que me puedan ayudar a resolverlo.
# Crear un script que intente adiviar un numro que tenemos en mente. El programa debera ir preguntando al usuario
# si el numero mostrado es mayor o menor.
#!/bin/bash
fin=20
inicio=1
cont=0
#intento=$(($RANDOM%$fin+$inicio))
#valor=$(expr $RANDOM \% $fin)
#intento=$(expr $valor \+ $inicio)
intento=$[ ( $RANDOM % ( $[ $fin - $inicio ] + 1 ) ) + $inicio ]
echo 'El numero es: '$intento ' S/N?: '
read resp
#echo 'respuesta: ' $resp
#echo 'inicio: '$inicio
#echo 'fin: '$fin
while [ $resp == 'N' ] && [ $intento -le $fin ] && [ $intento -ge $inicio ] &&[ $inicio -lt $fin ]
do
echo '¿El numero es MAYOR (M) o menor (m)?'
read resp1
if [ $resp1 == 'M' ]
then
inicio=$(expr $intento \+ 1)
echo 'Nuevo valor INICIO: '$inicio
echo 'FIN: '$fin
else
if [ $resp1 == 'm' ]
then
fin=$(expr $intento \- 1)
echo 'INICIO: '$inicio
echo 'Nuevo valor FIN: '$fin
else
echo 'El caracter introducido no es valido.'
fi
fi
# valor=$(expr $RANDOM \% $fin)
# intento=$(expr $valor \+ $inicio)
intento=$[ ( $RANDOM % ( $[ $fin - $inicio ] + 1 ) ) + $inicio ]
echo '¿El numero es: '$intento ' S/N?: '
read resp
done
echo 'Numero encontrado: '$intento
# cont=$(expr $cont \+ 1)