[Programación] Detectar stdin vacio!

Mario Oroz jmoroz en uol.com.ar
Jue Ago 19 13:24:46 ART 2010


Hola gente;

Necesito detectar en una  linea de comando compuesta por pipe si un
entrada estandar es vaciá.

x.txt esta vació; tiene 0 caracteres.

# cat x.txt | flip -mb - | lp -s -d printer
lp: stdin is empty, so no job has been sent.

Lo que pretendo es que no aparezca ese mensaje.

entonces quería detectar cuando la orden lp estaba recibiendo
un stdin vació


Habia pensado en esto:

[vacio.sh]
------------
#!/bin/bash
# Redirecting stdin using 'exec'.
exec 6<&0          # Link file descriptor #6 with stdin.
                   # Saves stdin.
if [ -s /dev/fd/6 ]; then
    cat /dev/fd/6
else
    echo "No hay datos para imprimir."
fi
exec 0<&6 6<&-
------------


# cat x.txt | flip -mb - | ./vacio.sh | lp -s -d printer
#

Pero no funciona como esperaba! ya que x.txt con y sin texto la salida por
impresora es "No hay datos para imprimir."


Alguien me da una pista?
Desde ya gracias.

Mario.



Más información sobre la lista de distribución Programacion