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] >