Re: Pregunta tonta de Bash
Guimi escribe:
> Iñaki escribió:
> >Hola, sé que debe ser una tontería pero no logro dar con la solución:
> >
> >if [ $(which top) ] ; then
> > echo "Paquete top instalado"
> >else
> > echo "Paquete top no instalado"
> >fi
> >
> >
> >Perfecto, pero yo quiero que de una manera sencilla hacer algo como:
> >
> >
> >if [ !$(which top) ] ; then
> > echo "top no instalado" ;
> >fi
> >
> >Pero obviamente no sirve (no existe) eso de poner un ! delante de la
> >condición.
>
> Si sirve, pero te falta un espacio:
> if [ ! $(which top) ]
> then
> echo "No"
> fi
>
> >La verdad es que los condicionales en Bash siempre han sido un infierno
> >para mí. ¿Alguien me ayuda a poner esa última opción correctamente pero
> >sin aumentar el número de líneas?
>
> man test ;-)
Yo, después de algunos años de bashes y whiches, he acabado
descubriendo que la forma más portable sería ésta:
if [ -x "`which top`" ]; then
echo "puedes ejecutar top"
fi
Esto te sirve tanto en otros sistemas UNIX (como HP-UX) donde which
tiene la gracia de devolver el estado "al revés" (0 si existe, 1 si no
existe). También te sirve en sistemas donde el comando estaría en el
path pero tu usuario no tendría permisos para ejecutarlo.
Si te preocupa el número de líneas:
[ -x "`which top`" ]; && echo "puedes ejecutar top"
Y no existen las preguntas tontas, existen las respuestas que se pasan
de listas.
Un saludo, Ismael
--
Ismael Valladolid Torres "Il est vain de pleurer sur l'esprit, il suffit
de travailler pour lui." Albert Camus
http://digitrazos.info/
http://lamediahostia.blogspot.com/ OpenPGP key ID: 0xDE721AF4
http://www.hispasonic.com/foro73.html Jabber ID: ivalladt@jabberes.org
Reply to: