Silencing Standard Error

D

David Calvin

Hello,

I am new here, so I apologize if this is a lame question. I have googled
for quite awhile trying to find out the answer to my question to no
avail.

In a script, I am issuing this line:


returnAddress = `defaults read
/path/to/conappsqa.bundle/serverconfig serverAddress`

Which reads a plist entry on my computer. If the plist entry is not
present then I get the following spew on the command line when I run the
script:


2010-07-08 09:32:37.273 defaults[29326:40b]
The domain/default pair of (/path/to/conappsqa.bundle/serverconfig,
serverAddress) does not exist

Is there a way I can eliminate this kind of spew? I just want to execute
the code and handle the error. I don't want all the mess.

Any tips?

Thanks.
 
J

James Harrison

Have you tried just simply stderr? You could either run the script and =
have 2>/dev/null be the redirect, or inside the backticks I think you =
can safely use the same redirect.

You can do it more ruby specific by redefining $STDERR, but that's =
probably overkill if it's a simple script.


James
 
B

Brian Candler

David said:
Any tips?

If you're running under some Unix-like O/S, then try

returnAddress = `defaults read /path/to/conappsqa.bundle/serverconfig
serverAddress 2>/dev/null`

Otherwise look at open3.rb in the standard library.
 
R

Robert Klemme

2010/7/8 David Calvin said:
Hello,

I am new here, so I apologize if this is a lame question. I have googled
for quite awhile trying to find out the answer to my question to no
avail.

In a script, I am issuing this line:


=A0 =A0returnAddress =3D `defaults read
/path/to/conappsqa.bundle/serverconfig serverAddress`

Which reads a plist entry on my computer. If the plist entry is not
present then I get the following spew on the command line when I run the
script:


2010-07-08 09:32:37.273 defaults[29326:40b]
The domain/default pair of (/path/to/conappsqa.bundle/serverconfig,
serverAddress) does not exist

Is there a way I can eliminate this kind of spew? I just want to execute
the code and handle the error. I don't want all the mess.

Any =A0tips?

If you want to silence all error output and you run on some form of
*nix you can do:

$stderr.reopen '/dev/null'

Example:

$ ruby19 -e 'x=3D`sh -c "echo foo >&2"`'
foo
$ ruby19 -e '$stderr.reopen("/dev/null");x=3D`sh -c "echo foo >&2"`'
$

Otherwise you need open3 as Brian said or do the fork exec yourself.

Kind regards

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top