Am 12.07.2018 um 14:50 schrieb Heiko Schlittermann:
Jochen Topf jochen@remote.org (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