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: [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]