43

I want to run an executable in Linux, and regardless of the exit status that it returns, I want to return a good exit status. (i.e. no error.)

(This is because I'm using sh -ex and I want the script to keep running even if one (specific) command fails.)

Ram Rachum
  • 5,231
  • 7
  • 34
  • 46

2 Answers2

62

Give this a try:

command || true

From man bash:

The shell does not exit if the command that fails is part of the command list immediately following a while or until keyword, part of the test following the if or elif reserved words, part of any command executed in a && or ⎪⎪ list except the command following the final && or ⎪⎪, any command in a pipeline but the last, or if the command's return value is being inverted with !.

Dennis Williamson
  • 62,149
  • 16
  • 116
  • 151
3

Try (executable ; exit 0), or alternatively wrap it in a shell script that always exits 0.

voretaq7
  • 79,879
  • 17
  • 130
  • 214
  • 3
    This works fine for most cases, but it sets up a subshell so if, for example, `(cd foo; exit 0)` is successful, you won't end up in "foo" afterwards since your cwd is returned to the one you were in previously. However, `cd foo || true` will leave you in "foo" if it's successful. – Dennis Williamson Jan 28 '11 at 20:02
  • good point -- if your process has additional side effects (setting environment variables, changing directories, etc.) this won't work out. – voretaq7 Jan 28 '11 at 20:38