Se que era fácil, pero de cambiar de un lenguaje a otro me equivoco mucho
con los " ; ", las ' '; los ' $ ', ' else if ' o ' elif ', etc...
Para quien le interese, aquí está:

2 condiciones
-------------------------------
echo "inserteu un número:";
read n;
if [ $n -eq 1 ]; then
banner número1;
else banner número2;
fi

3 condiciones
---------------------------------
echo "inserteu un número:";
read n;
if [ $n -eq 1 ]; then
banner número1;
elif [ $n -eq 2 ]; then
banner número2;
fi

4 condiciones
-------------------------------------
echo "inserteu número:";
read n;
if [ $n -eq 1 ]; then
banner número1;
elif [ $n -eq 2 ]; then
banner número2;
elif [ $n -eq 3 ]; then
banner número3;
elif [ $n -eq 4 ]; then
banner número4;

GRAZZIE por la ayuda.

JuAnArKo...






----- Original Message -----
From: "Victor Calzado Mayo" <[EMAIL PROTECTED]>
To: "Lista de correo Debian en Castellano"
<debian-user-spanish@lists.debian.org>
Sent: Monday, December 09, 2002 4:19 PM
Subject: Re: Condición IF ELSE de un script básico


> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hola
> On Monday 09 December 2002 15:19, sitalopez wrote:
> > Hola,
> > Una duda que quizá para muchos sea una novatada, pero a mi no me sale.
> > Tengo una duda con la condición "if" y "endif" "fi" de este script. Leo
> > manuales y todos dicen que lo hago bien, pero no me sale.
> > ¿alguien me puede hechar una mano?
> >
> > #fichero1.sh
> > echo "introduce número"
> > read n;
> las referencias a las variables se deben hacer con $variable
> si lees n debes comparar $n
> Ej:
> read n
> echo $n
>
>
> No me suena la encapsulación en paréntesis en sh
> pero podría ser...
>
> los operadores de una condición test nunca deben tocar los corchetes
> ten en cuenta que [  es un enlace duro a test ( son el mismo archivo )
sería
> como escribir testn en vez de test n ( recuerda que es $n.
>
> Por otro lado para comparar campos numéricos no se debe utilizar el
operador
> igual, deberías usar -eq
>
> > if ([n=1] then) echo "uno"
>
> Con lo que tu condición se transforma en
>
> if [ "$n" -eq 1 ]; then echo "uno"
>
> si quieres que pueda trabajar con cualquier caracter y no solo con números
> si puedes utilizar el operador = ( los tratas como caracteres y no como
> números ) mejora la tolerancia a fallos
>
> lo mismo has de aplicarlo en las siguientes líneas
> > elif ([n=2] then) echo "dos"
> > else echo "ni uno ni dos"
>
> solo tienes un bucle if ( fi es if al revés ;-)
> > fi
> este te sobraría
> > fi
>
> Compara con el tuyo éste:
>
> #!/bin/sh
> echo "introduce número"
> read n
> if [ $n = 1 ]
> then
> echo "uno"
> elif [ $n -eq 2 ]
> then
> echo "dos"
> else
> echo "ni uno ni dos"
> fi
>
> en cualquier caso para esas cosas te recomiendo el sencillo pero siempre
> interesante select
>
> #!/bin/bash
> select eleccion in uno dos tres cuatro salir
> do
> if [ $eleccion = salir ]
> then
> echo "Saliendo"
> exit 0
> fi
>
> if [ $eleccion = uno ]
> then
> echo "eleccion vale 1"
> elif [ $eleccion = dos  ]
> then
> echo "eleccion vale 2"
> else
> echo "eleccion vale tres o cuatro"
> fi
> done
>
> En cualquier caso, y para más y mejores detalles:
> La guía de scripting avanzado ( ojo es para bash )
>
> http://www.tldp.org/LDP/abs/html/index.html
>
> Saludos
> Victor
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.0.6 (GNU/Linux)
> Comment: For info see http://www.gnupg.org
>
> iD8DBQE99LSOEzqHF8R72ekRAmLsAKCZ5YbxMJCwWvdXGVxSPvFPCCXCLgCgkBjl
> wwOdq8MEh2YlXQqETm8d7Lc=
> =4dM1
> -----END PGP SIGNATURE-----
>
>
> --
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact
[EMAIL PROTECTED]
>

Responder a