Am 12.07.2018 um 16:34 schrieb Heiko Schlittermann:
Rene Terlecki rene.terlecki@gmx.de (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