1

When I do foo > bar.txt, bar.txt will be created no matter if foo succeeded or not. How can I create bar.txt only if foo succeeded?

maddingl
  • 197
  • 4
  • 20
  • 1
    Redirect to a temporary file and then move it to the real file if the command succeeds (else delete it). Or just plain delete the file if the command failed? – Some programmer dude Apr 23 '20 at 08:16
  • use `&&` https://stackoverflow.com/questions/4510640/what-is-the-purpose-of-in-a-shell-command – Chris Apr 23 '20 at 08:16

1 Answers1

2

foo > bar.txt || rm bar.txt should work and is short and concise.

maddingl
  • 197
  • 4
  • 20
  • 3
    Beautiful solution, but if the file `bar.txt` already existed, you will lose its previous version without having a new one. In most cases, this is not a problem. – Pierre François Apr 23 '20 at 08:36