Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

De nuevo ayuda en shell... (y se busca buen tuto)

demoer

Bovino maduro
Desde
25 Jul 2008
Mensajes
427
otra vez molestando con esto de la programación en shell ahora con algo mas sencillo aun que sigue siendo el maldito if...

ahora no encuentro en que me está fallando...

echo -n "teclea el primer numero:"
read num1
echo -n "teclea segundo numero:"
read num2
echo -n "teclea el tercer numero:"
read num3
if [ $num1 => $num2 ]
then
if [ $num1 > $num3 ]
then
if [ $num2 >= $num3 ]
then
pr $num1
fi
else
pr $num2
fi
else
pr $num3
fi


alguien que me recomiendo algún buen tutorial (ya que lel que yo encontré no tienen bien la sintaxis)

se agradece de antemano...
 
Compañero:

Creo que te vendría mejor utilizar un "case" para anidar los if - then . . . . .ademas te falta considerar "que pasa si no. . . " o sea un "else" . . . .

Y respecto al tutorial de programación en bash, hay uno excelente, por su sencillez y facilidad, y se trata de dos tipos que están en una cantina y uno le va explicando a otro la programación (NO es broma).

No lo encontré por falta de tiempo, pero momentaneamente te dejo este link:

http://www.aprendeaprogramar.com/course/view.php?id=10

Perdón. . . si lo encontre. . . jejeje

http://mrcomputer.es/blog/2009/04/simpatico-curso-de-bash-scripting/

Saludos
 
eh me parece que ">=" o "=>" es lo que no funciona con numeros en parentesis cuadrados, si lo reemplazas por "-ge" que significa "greater or equal than" funciona, el codigo quedaria asi:

Código:
echo -n "teclea el primer numero:"
read num1
echo -n "teclea segundo numero:"
read num2
echo -n "teclea el tercer numero:"
read num3

if [ $num1 -ge $num2 ]
then
    if [ $num1 -gt $num3 ]
    then
        if [ $num2 -ge $num3 ]
        then
            pr $num1
        fi
    else
        pr $num2
    fi
else
    pr $num3
fi
Por si te sirve, te escribo el resto;
"-eq" equal; igual (==)
"-ne" not equal; no igual (!=)
"-lt" less than; menor que (<)
"-le" less or equal; menor o igual (lo que seria <=)
"-gt" greater than; mayor que (>)
"-ge" greater or equal; mayor o igual (lo que seria >=)


<= y >= funcionan pero en doble parentesis redondo para numeros enteros, osea deberia quedar asi:
Código:
echo -n "teclea el primer numero:"
read num1
echo -n "teclea segundo numero:"
read num2
echo -n "teclea el tercer numero:"
read num3

if (( $num1 >= $num2 ))
then
    if (( $num1 > $num3 ))
    then
        if (( $num2 >= $num3 ))
        then
            pr $num1
        fi
    else
        pr $num2
    fi
else
    pr $num3
fi
Mas info aqui: http://tldp.org/LDP/abs/html/comparison-ops.html


@padre_gumaro Ese curso se ve bastante bueno, gracias por el link tb.


Saludos.
 
muchas gracias pero ahora lo que no me funciona es que si el numero mas grande es $num2 no lo muestra... pero aun asi gracias por el tiempo...
 
muchas gracias pero ahora lo que no me funciona es que si el numero mas grande es $num2 no lo muestra... pero aun asi gracias por el tiempo...
El script no esta hecho para mostrar al numero mayor, si es eso lo que quieres entonces no esta bien estructurado, porque cuando num2 es mayor entonces no se cumple la primera condicion y se va al else que muestra el num3.

Tendria que ser asi con if anidados:
Código:
echo -n "teclea el primer numero:"
read num1
echo -n "teclea segundo numero:"
read num2
echo -n "teclea el tercer numero:"
read num3

if (( $num1 > $num2)); then
    if (( $num1 > $num3 )); then
        echo $num1
    else
        echo $num3
    fi
elif (( $num2 > $num3 )); then
    echo $num2
else
    echo $num3
fi
o podrias usar &&(y) o ||(o)

Saludos.
 
Volver
Arriba