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-----
Reply to: