J'essaie d'écraser un fichier avec une sortie de commande, mais uniquement s'il y a une sortie. Autrement dit, je veux habituellement
mycommand > myfile
mais si cela devait écraser myfileavec des données vides, je souhaite conserver l'ancienne version de myfile. Je pensais que quelque chose en utilisant ifnedevrait être possible, à la
mycommand | ifne (cat > myfile)
mais ça ne marche pas ...
Une approche indirecte
mycommand | tee mytempfile | ifne mv mytempfile myfile
fonctionne, mais je considère que l'utilisation de ce fichier temporaire n'est pas élégante.
Q: Pourquoi ma première idée ne fonctionne-t-elle pas? Peut-on le faire fonctionner? Ou existe-t-il une autre solution intéressante et peut-être complètement différente pour mon problème d'origine?