From: Alex Eiras Date: 2009-04-12T20:08:42+09:00 Subject: Re: shell exit code --000e0cd34100ae6c6f0467599eff Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit > > Hello Group, > > Is there any way to retrieve an exit code of shell commands when called > from ruby? > > ruby code : > > exec("ls") if fork.nil? > Process.wait > > shell : > > # ls > # echo $? <-- get this value in ruby > -- > As of Ruby 1.9, you indeed have the $? global variable, which references the exit status of the last child process to terminate. In your example, exec will replace the subprocess by running the given command, thus $? will contain its exit status. irb(main):001:0> exec('ls') if fork.nil?; Process.wait; puts $? tmp pid 5552 exit 0 irb(main):002:0> exec('cat /etc/sudoers') if fork.nil?; Process.wait; puts $? cat: /etc/sudoers: Permission denied pid 5556 exit 1 Hope it helps Cheers Alex --000e0cd34100ae6c6f0467599eff--