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.)

2 Answers 2

64

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 !.

1
  • also a good one :)
    – voretaq7
    Jan 28, 2011 at 19:53
3

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

2
  • 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. Jan 28, 2011 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, 2011 at 20:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .