I want to capture the string that system(“hostname”) produces on windows
and store it in a variable. system() returns true or false. How can I
make it return the result (the hostname as a string) instead?
On Jul 15, 2006, at 10:12 PM, brad tilley wrote:
I want to capture the string that system(“hostname”) produces on
windows
and store it in a variable. system() returns true or false. How can I
make it return the result (the hostname as a string) instead?–
Posted via http://www.ruby-forum.com/.
Use backticks:
hostname = hostname
.chomp
Logan C. wrote:
On Jul 15, 2006, at 10:12 PM, brad tilley wrote:
I want to capture the string that system(“hostname”) produces on
windows
and store it in a variable. system() returns true or false. How can I
make it return the result (the hostname as a string) instead?–
Posted via http://www.ruby-forum.com/.Use backticks:
hostname =
hostname
.chomp
If you want to catch all output including both STDOUT and STDERR you
should do following trick
output = someprogram 2>&1
So using OS pipes you redirect STDERR to STDOUT and then run application
and get STDOUT using `` function.
If you want to catch all output including both STDOUT and STDERR you
should do following trickoutput =
someprogram 2>&1
So using OS pipes you redirect STDERR to STDOUT and then run application
and get STDOUT using `` function.
Except that the OP said he is on Windows, and unless he is using cygwin
to get bash/sh style redirection, that won’t work. Starndard Error
isn’t captured by any of the ruby IO/Exec processes that I can find.
Steve M. wrote:
If you want to catch all output including both STDOUT and STDERR you
should do following trickoutput =
someprogram 2>&1
So using OS pipes you redirect STDERR to STDOUT and then run application
and get STDOUT using `` function.Except that the OP said he is on Windows, and unless he is using cygwin
to get bash/sh style redirection, that won’t work. Starndard Error
isn’t captured by any of the ruby IO/Exec processes that I can find.
Did you really try my recipe on Windows???
File.open(‘a.rb’,‘w’){|f|
f.write <<-END
STDOUT.puts ‘standard output stream’
STDERR.puts ‘error output stream’
END
}
out = ruby a.rb 2>&1
puts “HERE IT IS OUTPUT:”
puts out
=====OUTPUT=====
HERE IT IS OUTPUT:
standard output stream
error output stream
I stand corrected. I did try it, but got it twisted up. Yet more
evidence that Windows has moved closer to a Unix syntax for the command
shell. Handy to know if I ever end up doing development on Windows.