Am 12.07.2018 um 14:50 schrieb Heiko Schlittermann:
Jochen Topf <[email protected]> (Do 12 Jul 2018 09:09:49 CEST):
Die Lösung ist relativ einfach mit einem externen Programm zu erledigen,
das quasi wie "cat" funktioniert, also Daten einfach durchleitet, aber
die Ausgabedatei selbst aufmacht und zwar erst dann, wenn zum ersten Mal
Daten ankommen. Ich weiß von keinem Programm, dass das macht, aber es
ist auch nicht schwierig, sowas zu schreiben.
     #!/bin/bash
     read || exit
     test $# = 1  && exec 1>"$1"
     printf '%s\n' "$REPLY"
     exec cat

--
Heiko
Danke für die Ansätze

mein aktueller Stand ist
v=$(......); [[ -n $v ]] && echo "$v" > file
das ist übersichtlich und macht das, was es soll
nur die Variable gefällt mir nicht, da man immer aufpassen muss, dass dadurch im Skript nicht irgendwas unerwartetes passiert

allerdings habe ich auch schon folgenden Ansatz versucht
..... | xargs --no-run-if-empty --null > file

ich wollte gern auf zusätzliche Abhängigkeiten wie Shellfunktionen oder andere Skripte verzichten

ciao
Rene

Antwort per Email an