Wie kann ich feststellen, ob in stdin Daten liegen oder nicht?
Mein Problem mit tools wie cat:
Code: Alles auswählen
echo foo | cat > datei
Aber wenn cat keinen Input von stdin bekommt, wartet es für immer, und mein Skript geht nicht weiter:
Code: Alles auswählen
cat > datei # cat wartet 100 Jahre auf Input von stdin
Code: Alles auswählen
IFS="" read -t 0.1 -rn 1 Byte
[ -n "$Byte" ] && {
echo -n $Byte
cat
} > datei
Code: Alles auswählen
cat <(cat) > datei
Als Hintergrundprozeß bekommt cat gar keine Daten, auch wenn es welche in stdin gibt:
Code: Alles auswählen
cat > datei &
Ein simples [ -s /dev/stdin ] funktioniert leider auch nicht.
Ein paar Threads, in denen ich keine zufriedenstellende Lösung gefunden habe:
https://superuser.com/questions/210054/ ... pty-return
https://unix.stackexchange.com/question ... if-it-isnt
Gibt es eine saubere Lösung?