[eside-ghost] Duda bash

Bruno Gonzalez stenyak en gmail.com
Jue Nov 24 15:37:31 CET 2011


Llego un poco tarde, pero tengo un ratejo así que voy a explicar un poco el
tema este, que es más complejo de lo que parece a priori si lees un
tutorial básico de bash.

Aclarar que "[" es un programa, situado en   /usr/bin/[    y que es
esencialmente idéntico al comando /usr/bin/test (excepto que requiere un
último parámetro "]").

Es decir, que estas líneas hacen lo mismo:
$ [ -f archivo ]
$ test -f archivo
$ /usr/bin/test -f archivo
$ /usr/bin/[ -f archivo ]

Por otra parte, "if" es un comando interno de bash (no existe /usr/bin/if,
ni nada similar, sino que bash detecta la palabra if como algo especial),
que acepta cualquier comando (y sus parámetros) que le escribas detrás. Por
ejemplo, estas dos lineas son también iguales:
$ if true; then echo "es cierto"; fi
$ if /bin/true; then echo "es cierto"; fi

O estas tres:
$ if /usr/bin/test -f archivo; then echo "el archivo existe"; fi
$ if [ -f archivo ]; then echo "el archivo existe"; fi
$ if test -f archivo; then echo "el archivo existe"; fi

Concretamente, if comprueba el código de retorno del comando.
Concretamente, un valor de retorno 0 se interpreta como verdadero, y
cualquier otro valor como falso. O sea que 1 es false, y 0 es true.
Efecitvamente,
es todo una warrada monumental si se compara con cualquier otro lenguaje de
programación corriente.

Una vez entendido esto, se pueden entender los problemas de meter ">" en un
if. Por ejemplo:
$ if echo "hola" > archivo.txt; then....
$ if /usr/bin/test 10 > archivo.txt; then...
$ if test 10 > 20; then....
$ if [ 10 > 20 ]; then...
En todos esos casos, el ">" es interpretado de la misma forma: como una
redirección de la salida estándar.

Luego existen más sintaxis mágicas, como $((...)), o la version "pro" del
test normal [[ ... ]], o los casos en que no existe /usr/bin/[ o se toma
como un comando interno... Todo un mundo de versatilidad y sufrimiento a
partes iguales ;-)


2011/11/24 Ãlvaro Morán <nirvana644 en gmail.com>

> Hola,
>
> ya resolví lo del if, los signos "> = <" sirven para comparar Strings<http://linuxconfig.org/Bash_scripting_Tutorial#10-2-string-comparisons>no valores
> numéricos <http://fvue.nl/wiki/Bash:_Numeric_comparison>, para lo cual
> hay que usar "-gt -eq -lt".
> Como en este ejemplo:
> if [ "$brillo" -gt `expr $MAX_BRILLO - 100` ]; then
>
> El script completo lo he colgado aquí por si a alguien le interesa:
> http://askubuntu.com/questions/57236/unable-to-change-brightness-in-a-lenovo-laptop#82320
>
> El 23 de noviembre de 2011 12:00, <eside-ghost-request en listas.deusto.es>escribió:
>
>> Envíe los mensajes para la lista eside-ghost a
>>        eside-ghost en listas.deusto.es
>>
>> Para subscribirse o anular su subscripción a través de la WEB
>>        https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>> O por correo electrónico, enviando un mensaje con el texto "help" en
>> el asunto (subject) o en el cuerpo a:
>>        eside-ghost-request en listas.deusto.es
>>
>> Puede contactar con el responsable de la lista escribiendo a:
>>        eside-ghost-owner en listas.deusto.es
>>
>> Si responde a algún contenido de este mensaje, por favor, edite la
>> linea del asunto (subject) para que el texto sea mas especifico que:
>> "Re: Contents of eside-ghost digest...". Además, por favor, incluya en
>> la respuesta sólo aquellas partes del mensaje a las que está
>> respondiendo.
>>
>>
>> Asuntos del día:
>>
>>   1. Duda bash (Ãlvaro Morán)
>>   2. Re: Duda bash (Eneko chan)
>>   3. Re: Duda bash (Cruz Enrique Borges)
>>   4. Problema XEN (Ãlvaro Morán)
>>   5. Re: Correo en HTML o larga vida al texto plano? (Eduardo Lara)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Tue, 22 Nov 2011 12:50:39 +0100
>> From: Ãlvaro Morán <nirvana644 en gmail.com>
>> Subject: [eside-ghost] Duda bash
>> To: eside-ghost en listas.deusto.es
>> Message-ID:
>>        <
>> CAPYKGew07ENOMErMyrwSgPTurO_XFm0aii7y3PkkFczE8_TYEA en mail.gmail.com>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>>
>> ¿Por qué al ejecutar un script como este:
>>
>> #!/bin/bash
>> MAX_BRILLO="4882"
>> MIN_BRILLO_ABSOLUTO="0"
>> MIN_BRILLO="100" #el brillo mínimo puede ser 0 pero eso deja la pantalla
>> completamente a oscuras
>> INTERVALO=`expr $MAX_BRILLO - $MIN_BRILLO_ABSOLUTO`
>> INTERVALO=`expr $INTERVALO / 10` #no se puede hacer la suma y la división
>> de una sola vez con expr
>> #echo Intervalo = $INTERVALO
>> brillo=`cat /sys/class/backlight/intel_backlight/brightness` #no es lo
>> mismo ` que ', el primero es para comandos y el segundo para strings
>> echo El brillo actual es $brillo
>> if [ $brillo > $MAX_BRILLO-100 ]; then
>>        echo 'Máximo'
>> fi
>>
>> Se me crea un fichero en blanco de nombre "4882-100"?
>>
>> He googleado y lo único que encuentro es cómo crear ficheros en bash y
>> cosas por el estilo.
>> ------------ próxima parte ------------
>> Se ha borrado un adjunto en formato HTML...
>> URL:
>> https://listas.deusto.es/mailman/private/eside-ghost/attachments/20111122/01e28ed5/attachment-0001.htm
>>
>> ------------------------------
>>
>> Message: 2
>> Date: Tue, 22 Nov 2011 12:54:25 +0100
>> From: Eneko chan <enekochan en gmail.com>
>> Subject: Re: [eside-ghost] Duda bash
>> To: Lista de eside-ghost <eside-ghost en listas.deusto.es>
>> Message-ID:
>>        <
>> CA+dEgkfjjwTEQxQm3E-VYSvDxaMyR1654w_M0bpDuQzeq0zgTw en mail.gmail.com>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>>
>> Así a bote pronto igual es por la sentencia "if" que en vez de usar el
>> comparador > deberias usar -gt (greater than). Igual me estoy colando, que
>> hace mucho que no uso bash script.
>>
>> 2011/11/22 Ãlvaro Morán <nirvana644 en gmail.com>
>>
>> > ¿Por qué al ejecutar un script como este:
>> >
>> > #!/bin/bash
>> > MAX_BRILLO="4882"
>> > MIN_BRILLO_ABSOLUTO="0"
>> > MIN_BRILLO="100" #el brillo mínimo puede ser 0 pero eso deja la pantalla
>> > completamente a oscuras
>> > INTERVALO=`expr $MAX_BRILLO - $MIN_BRILLO_ABSOLUTO`
>> > INTERVALO=`expr $INTERVALO / 10` #no se puede hacer la suma y la
>> división
>> > de una sola vez con expr
>> > #echo Intervalo = $INTERVALO
>> > brillo=`cat /sys/class/backlight/intel_backlight/brightness` #no es lo
>> > mismo ` que ', el primero es para comandos y el segundo para strings
>> > echo El brillo actual es $brillo
>> > if [ $brillo > $MAX_BRILLO-100 ]; then
>> >         echo 'Máximo'
>> > fi
>> >
>> > Se me crea un fichero en blanco de nombre "4882-100"?
>> >
>> > He googleado y lo único que encuentro es cómo crear ficheros en bash y
>> > cosas por el estilo.
>> >
>> >
>> > _______________________________________________
>> > eside-ghost mailing list
>> > eside-ghost en listas.deusto.es
>> > https://listas.deusto.es/mailman/listinfo/eside-ghost
>> >
>> ------------ próxima parte ------------
>> Se ha borrado un adjunto en formato HTML...
>> URL:
>> https://listas.deusto.es/mailman/private/eside-ghost/attachments/20111122/72ff771a/attachment-0001.htm
>>
>> ------------------------------
>>
>> Message: 3
>> Date: Tue, 22 Nov 2011 12:56:31 +0100
>> From: Cruz Enrique Borges <cruz.borges en deusto.es>
>> Subject: Re: [eside-ghost] Duda bash
>> To: Lista de eside-ghost <eside-ghost en listas.deusto.es>
>> Message-ID: <2459413.UxbPFBr65E en thor>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>>
>> > if [ $brillo > $MAX_BRILLO-100 ]; then
>> >         echo 'Máximo'
>> > fi
>> >
>> > Se me crea un fichero en blanco de nombre "4882-100"?
>>
>> mi sospecha es que en esta sentencia estás redireccionando el contenido de
>> ${brillo} al fichero de nombre 4882-100 que es el valor de $MAX_BRILLO
>> junto
>> con el -100.
>>
>> No me acuerdo de como era, pero los if no se escriben así (tema aparte
>> que los
>> nombres de las variables deberían de estar puestos ${nombre} para evitar
>> problemas).
>>
>> --
>> Cruz Enrique Borges Hernández
>> Email: cruz.borges en deusto.es
>>
>> DeustoTech Energy
>> Telefono: 944139000 ext.2052
>> Avda. Universidades, 24
>> 48007 Bilbao, Spain
>>
>>
>> ------------------------------
>>
>> Message: 4
>> Date: Tue, 22 Nov 2011 14:15:00 +0100
>> From: Ãlvaro Morán <nirvana644 en gmail.com>
>> Subject: [eside-ghost] Problema XEN
>> To: eside-ghost en listas.deusto.es
>> Message-ID:
>>        <
>> CAPYKGewEV4E+WHR6DhdYoZsGUsb4kSwKBdCvtcqUB0wnjVYMEg en mail.gmail.com>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Hola,
>>
>> estoy ejecutando Kubuntu 11.10 x86_64 como Dom0 sobre el hypervisor XEN
>> siguiendo el manual de
>>
>> http://www.beyondlinux.com/2011/11/02/install-xen-4-1-and-setup-your-cloud-os-on-ubuntu-11-10/
>> y
>> aunque puedo crear y ejecutar como DomU por ejemplo una Debian Squeeze en
>> Full Virtualization al ejecutar un comando como "sudo virsh version" me da
>> como resultado:
>>
>> Utilizando la biblioteca: libvir 0.9.2
>> Utilizando API: QEMU 0.9.2
>> error: Falló al obtener la versión del hipervisor
>> error: internal error Cannot find suitable emulator for x86_64
>>
>> ¿Alguien sabe a qué se pueden deber estos errores? No me he saltado lo
>> de (xend-unix-server
>> yes) ni lo de export VIRSH_DEFAULT_CONNECT_URI="xen:///"
>>
>> Además al ejecutar virt-manager si apago la DomU tengo que cerrar y volver
>> a abrir virt-manager para que me la detecte como apagada. ¿Alguna
>> sugerencia?
>>
>> Y gracias a los que crearon
>> http://www.slideshare.net/saghul/virtualizacin-con-xen-y-kvm me ha
>> resultado muy útil
>> ------------ próxima parte ------------
>> Se ha borrado un adjunto en formato HTML...
>> URL:
>> https://listas.deusto.es/mailman/private/eside-ghost/attachments/20111122/b1d6013c/attachment-0001.htm
>>
>> ------------------------------
>>
>> Message: 5
>> Date: Tue, 22 Nov 2011 18:57:27 +0100
>> From: Eduardo Lara <elara_l en yahoo.es>
>> Subject: Re: [eside-ghost] Correo en HTML o larga vida al texto plano?
>> To: Lista de eside-ghost <eside-ghost en listas.deusto.es>
>> Message-ID: <4ECBE287.4010706 en yahoo.es>
>> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>>
>> On 22/11/11 00:15, Javier Ortega Conde (Malkavian) wrote:
>> > Aupa:
>> >
>> > Veo que no hay acuerdo total, pero parece que mi opinión era aceptable.
>> Usar
>> > texto plano mientras se pueda, y tragar con el uso, muchas veces
>> innecesario
>> > de HTML de otr en s. De todas formas kmail (y gmail) también bloquean los
>> > contenidos externos de los correos HTML, hasta que pinches en que los
>> active.
>> > A Kmail le falta una opción, como sí tiene Gmail, para confiar en los
>> > contenidos que te envíe tal o cual persona, pero bueno.
>> Está complicado usar sólo texto plano para los correos, por el "reply".
>> Yo suelo hacer, en la libreta de direcciones, la selección de texto
>> plano o html, así quién habitualmente usa texto plano recibe los correos
>> en su texto plano.
>> > Me parece perfecto que uses el telégrafo, mientras tengas alguien con
>> quien
>> > usarlo, cojonudo Aduardo (sí, con A, que así lo has escrito:
>> > .- -.. ..- .- .-. -.. ---  ) jaja.
>> Pues la pasada semana hubo una conmemoración del bueno de Morse y había
>> bastante meneo
>> telegráfico.
>>
>> Un saludo
>>
>> .- -.. ..- .- .-. -.. ---
>>
>> (yanolocambio)
>>
>>
>> --
>> In principium erat linea commandorum
>>
>>
>>
>> ------------------------------
>>
>>
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en listas.deusto.es
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>> Fin de Resumen de eside-ghost, Vol 879, Envío 1
>> ***********************************************
>>
>
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>



-- 
Saludos,
     Bruno González

_______________________________________________
Jabber: stenyak AT gmail.com
http://www.stenyak.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://listas.deusto.es/mailman/private/eside-ghost/attachments/20111124/97229b30/attachment-0001.htm 


Más información sobre la lista de distribución eside-ghost