Re: Pregunta tonta de Bash
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Ismael Valladolid Torres wrote:
> 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"
^^
Solo una pequeña aclaracion a tan magistrales correos:
ricardo@kebek:~ $ [ `which top` ]; && echo "top ta"
bash: syntax error near unexpected token `&&'
ricardo@kebek:~ $ [ `which top` ] && echo "top ta"
top ta
ricardo@kebek:~ $ uname -a
Linux kebek 2.6.12-10-686 #1 Fri Sep 15 16:37:09 UTC 2006 i686 GNU/Linux
ricardo@kebek:~ $
Esta noche lo pruebo en AIX, Solaris y HP-UX y les cuento ;)
>
> Y no existen las preguntas tontas, existen las respuestas que se pasan
> de listas.
Si que existen! Ahi va una:
Adan .... tenía ombligo?
:P
>
> Un saludo, Ismael
- --
Ricardo A.Frydman
Administrador de Sistemas Unix
http://eureka-linux.com.ar
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFFVIVCkw12RhFuGy4RAuIWAJ931vfPBMj7ta1TlqWnAuzhlE+Z8ACfTWDB
RK1VID6GbaMRZwwY0dJL5rA=
=CmSE
-----END PGP SIGNATURE-----
Reply to: