[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: