相关疑难解决方法(0)

ruby系统命令检查退出代码

我在ruby中有一堆系统调用,如下所示,我想同时检查它们的退出代码,以便在该命令失败时我的脚本退出.

system("VBoxManage createvm --name test1")
system("ruby test.rb")
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西

system("VBoxManage createvm --name test1", 0) < - 第二个参数检查退出代码并确认系统调用成功,如果没有,则会引发错误或执行某种操作.

这有可能吗?

我已经尝试过这方面的事情,但也没有用.

system("ruby test.rb")
system("echo $?")
Run Code Online (Sandbox Code Playgroud)

要么

`ruby test.rb`
exit_code = `echo $?`
if exit_code != 0
  raise 'Exit code is not zero'
end
Run Code Online (Sandbox Code Playgroud)

ruby command exit-code exit

102
推荐指数
6
解决办法
8万
查看次数

在Ruby中拯救bash/system STDERR

我正在使用我的Ruby脚本来调用系统命令,如下所示

puts "Reached point #1"

begin
  system("sh my_shell_script.sh")
rescue StandardError => e
  puts "There was an error"
end

puts "Reached point #2"
Run Code Online (Sandbox Code Playgroud)

我故意在我的shell脚本中添加了一个错误,因此它会失败(即我将"echo"拼写为"eho").我希望我的Ruby脚本输出它到达标记#1,然后挽救错误以显示"有错误".

相反,我得到:

"Reached point #1"
line 1: eho: command not found
"Reached point #2"
Run Code Online (Sandbox Code Playgroud)

它肯定会抛出正确的错误,但系统(...)的shell错误不会被挽救.有什么想法为什么?

ruby shell exception system

2
推荐指数
1
解决办法
2727
查看次数

标签 统计

ruby ×2

command ×1

exception ×1

exit ×1

exit-code ×1

shell ×1

system ×1