J'ai pipé une ligne dans le script bash et je veux vérifier si le tuyau contient des données avant de l'envoyer à un programme.
En cherchant j'ai trouvé environ test -t 0
mais ça ne marche pas ici. Retourne toujours faux. Alors, comment être sûr que le tuyau a des données?
Exemple:
echo "string" | [ -t 0 ] && echo "empty" || echo "fill"
Sortie: fill
echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill"
Sortie: fill
Contrairement à la manière standard / canonique de tester si le pipeline précédent produit une sortie? l'entrée doit être préservée pour la transmettre au programme. Ceci généralise Comment diriger la sortie d'un processus vers un autre mais ne s'exécuter que si le premier a une sortie? qui se concentre sur l'envoi d'email.