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


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

| improve this answer | |
  • also a good one :) – voretaq7 Jan 28 '11 at 19:53

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

| improve this answer | |
  • 2
    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. – Paused until further notice. 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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.