Tôi có một loạt các cuộc gọi hệ thống trong ruby như sau và tôi muốn kiểm tra mã thoát của chúng đồng thời để tập lệnh của tôi thoát ra nếu lệnh đó không thành công.lệnh hệ thống ruby kiểm tra mã thoát
system("VBoxManage createvm --name test1")
system("ruby test.rb")
Tôi muốn một cái gì đó giống như
system("VBoxManage createvm --name test1", 0)
< - nơi tham số thứ hai kiểm tra mã lối ra và khẳng định rằng cuộc gọi hệ thống đã thành công, và nếu không, nó sẽ nâng cao một lỗi hay làm điều gì đó của loại đó.
Có thể không?
Tôi đã thử điều gì đó dọc theo dòng này và điều đó cũng không hoạt động.
system("ruby test.rb")
system("echo $?")
hoặc
`ruby test.rb`
exit_code = `echo $?`
if exit_code != 0
raise 'Exit code is not zero'
end
thể trùng lặp của [lỗi Bắt dòng lệnh sử dụng% x] (http://stackoverflow.com/questions/4771930/catching-command-line-errors-using-x) –
Ở phía trên ví dụ, 'exit_code' sẽ là một chuỗi - hoặc' "0 \ n" 'hoặc' "1 \ n" ', vì vậy' exit_code! = 0' sẽ luôn là đúng – dgmstuart