我在ruby中有很多系统调用,比如下面的,我想同时判断它们的退出代码,以便在命令失败时退出脚本.

system("VBoxManage createvm --name test1")
system("ruby test.rb")

我想要像这样的东西

system("VBoxManage createvm --name test1", 0)<——第二个参数判断退出代码并确认系统调用成功,如果不成功,它将引发错误或执行类似操作.

这有可能吗?

我试过类似的方法,但也没用.

system("ruby test.rb")
system("echo $?")

`ruby test.rb`
exit_code = `echo $?`
if exit_code != 0
  raise 'Exit code is not zero'
end

推荐答案

documentation人中:

如果命令给出零退出状态,系统返回true,对于

system("unknown command")     #=> nil
system("echo foo")            #=> true
system("echo foo | grep bar") #=> false

此外

错误状态在$?中可用.

system("VBoxManage createvm --invalid-option")

$?             #=> #<Process::Status: pid 9926 exit 2>
$?.exitstatus  #=> 2

Ruby相关问答推荐

ruby:比较两个单词并从中提取不常见的字母

应用 ransack 日期字段过滤器后,相同的输出票证重复而不是一张

如果嵌套数组为空,如何判断 ruby​​?

在Ruby中将关键字与常规参数混合?

Ruby:将unix时间戳转换为日期

Encoding::UndefinedConversionError

Ruby 在与源相同的目录中加载配置(yaml)文件

Ruby 连接字符串并添加空格

根据另一个数组的元素对数组进行排序

RSpec allow/expec vs expect/and_return

在现有 Jekyll 安装中切换主题

如何通过拆分字符的最后一次出现将字符串拆分为仅两部分?

确定一个值是否存在于哈希数组中

如何将哈希键转换为方法名称?

当我将参数传递给脚本时,使用 gets() 会出现没有这样的文件或目录错误

运行 Ruby 命令时,PATH 中不安全的世界可写目录 /Users/username,模式 040777

如何在 jekyll markdown 博客中包含视频

类变量上的 attr_accessor

相当于 Ruby 的 cURL?

检索/列出 Redis 数据库中的所有键/值对