Rubyシステムコマンドチェック終了コード
概要
Ruby には次のようなシステムコールがたくさんあり、それらの終了コードを同時にチェックして、そのコマンドが失敗した場合にスクリプトが終了するようにしたいと考えています。
system("VBoxManage createvm --name test1")
system("ruby test.rb")
のようなものが欲しいです
system(“VBoxManage createvm –name test1”, 0) <– ここで、2 番目のパラメーターは終了コードをチェックして、そのシステム コールが成功したことを確認します。失敗した場合は、エラーが発生するか、そのような処理が行われます。
そもそもそれは可能でしょうか?
これに沿って何かを試してみましたが、それもうまくいきませんでした。
system("ruby test.rb")
system("echo $?")
または
`ruby test.rb`
exit_code = `echo $?`
if exit_code != 0
raise 'Exit code is not zero'
end
解決策
ドキュメントから:
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