Am 12.07.2018 um 16:34 schrieb Heiko Schlittermann:
Rene Terlecki <[email protected]> (Do 12 Jul 2018 16:29:22 CEST):
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
Was meinst Du genau?
Das einzige, was Dir passieren kann, ist daß $v z.B. ein "-n" enthält,
also eine Option, die echo versteht. Du könntest das lösen mit

     printf '%s\n' "$v"
oder
     cat <<<$v > file

allerdings habe ich auch schon folgenden Ansatz versucht
..... | xargs --no-run-if-empty --null > file
Da wird file wieder angelegt, bevor irgendwas los geht. Ansonsten ist
das mit dem xargs schon interessant :)

--
Heiko
die Datei existiert die ganze Zeit
sie soll nur überschrieben werden (wenn es was zum Überschreiben gibt)
was nicht passieren darf, ist, dass die Datei geleert wird, indem "nichts" reingeschrieben wird

das Problem ist, dass ich den Output sowohl auf "nicht leer" testen muss und ihn nur dann
in die Datei schreiben will, wenn er nicht leer ist

ciao, Rene

Antwort per Email an