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 :
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 :
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
Hello Alex,
Thank you for your advise. This really helped!
Regards,
Yuguri
Alex Eiras wrote:
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 0irb(main):002:0> exec(‘cat /etc/sudoers’) if fork.nil?; Process.wait;
puts
$?
cat: /etc/sudoers: Permission denied
pid 5556 exit 1Hope it helps
CheersAlex
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs