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
···
--
Posted via http://www.ruby-forum.com/.
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
--
Posted via http://www.ruby-forum.com/.
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.waitshell :
# 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
--
Posted via http://www.ruby-forum.com/\.