Silencing Standard Error

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.

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

David C. wrote:

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.

2010/7/8 David C. [email protected]:

returnAddress = `defaults read

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?

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=sh -c "echo foo >&2"
foo
$ ruby19 -e ‘$stderr.reopen("/dev/null");x=sh -c "echo foo >&2"
$

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

Kind regards

robert