Mam kilka wywołań systemowych w Rubim, takich jak poniższe, i chcę jednocześnie sprawdzić ich kody zakończenia, aby mój skrypt zakończył działanie, jeśli to polecenie zawiedzie.
system("VBoxManage createvm --name test1")
system("ruby test.rb")
Chcę czegoś takiego
system("VBoxManage createvm --name test1", 0)
<- gdzie drugi parametr sprawdza kod zakończenia i potwierdza, że wywołanie systemowe się powiodło, a jeśli nie, spowoduje zgłoszenie błędu lub zrobi coś podobnego.
Czy to w ogóle możliwe?
Próbowałem czegoś podobnego do tego i to też nie zadziałało.
system("ruby test.rb")
system("echo $?")
lub
`ruby test.rb`
exit_code = `echo $?`
if exit_code != 0
raise 'Exit code is not zero'
end
exit_code
będzie ciągiem - albo "0\n"
albo "1\n"
, więc exit_code != 0
zawsze będzie prawdziwe