首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Capistrano & Bash:忽略命令退出状态

Capistrano & Bash:忽略命令退出状态
EN

Stack Overflow用户
提问于 2009-04-17 02:35:04
回答 7查看 22.8K关注 0票数 50

我正在使用Capistrano运行一个远程任务。我的任务看起来像这样:

代码语言:javascript
复制
task :my_task do
  run "my_command"
end

我的问题是,如果my_command的退出状态为!= 0,则Capistrano认为它失败并退出。当退出状态不为0时,如何让capistrano继续运行?我已经把my_command改成了my_command;echo,而且还行得通,但感觉就像是个黑客。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-08-25 14:19:54

最简单的方法是将true附加到命令的末尾。

代码语言:javascript
复制
  task :my_task do
    run "my_command"
  end

变成了

代码语言:javascript
复制
  task :my_task do
    run "my_command; true"
  end
票数 79
EN

Stack Overflow用户

发布于 2014-05-02 16:49:47

对于Capistrano 3,您可以(按照建议的here)使用以下内容:

代码语言:javascript
复制
execute "some_command.sh", raise_on_non_zero_exit: false
票数 40
EN

Stack Overflow用户

发布于 2009-04-21 19:09:43

+grep+命令根据它找到的结果退出非零值。在您关心输出但不关心它是否为空的用例中,您将静默地放弃退出状态:

代码语言:javascript
复制
run %Q{bash -c 'grep #{escaped_grep_command_args} ; true' }

通常,我认为第一种解决方案很好--我会让它自己文档化:

代码语言:javascript
复制
cmd = "my_command with_args escaped_correctly"
run %Q{bash -c '#{cmd} || echo "Failed: [#{cmd}] -- ignoring."'}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/758774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档