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