Capistrano & Bash: ignore command exit status
The simplest way is to just append true to the end of your command.
task :my_task do run "my_command" end
Becomes
task :my_task do run "my_command; true" end
For Capistrano 3, you can (as suggested here) use the following:
execute "some_command.sh", raise_on_non_zero_exit: false
The +grep+ command exits non-zero based on what it finds. In the use case where you care about the output but don't mind if it's empty, you'll discard the exit state silently:
run %Q{bash -c 'grep #{escaped_grep_command_args} ; true' }
Normally, I think the first solution is just fine -- I'd make it document itself tho:
cmd = "my_command with_args escaped_correctly"run %Q{bash -c '#{cmd} || echo "Failed: [#{cmd}] -- ignoring."'}