He canalizado una línea en el script bash y quiero verificar si la tubería tiene datos, antes de alimentarla a un programa.
Buscando encontré test -t 0
pero no funciona aquí. Siempre devuelve falso. Entonces, ¿cómo estar seguro de que la tubería tiene datos?
Ejemplo:
echo "string" | [ -t 0 ] && echo "empty" || echo "fill"
Salida: fill
echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill"
Salida: fill
¿A diferencia de la forma estándar / canónica de probar si la tubería anterior produjo salida? la entrada necesita ser preservada para pasarla al programa. Esto generaliza ¿Cómo canalizar la salida de un proceso a otro pero solo se ejecuta si el primero tiene salida? que se centra en enviar correos electrónicos.