standard error to standard out question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting standard error to standard out question
# 1  
Old 05-22-2009
standard error to standard out question

Hi there

how can i get the result of a command to not give me its error. For example, on certain systems the 'zfs' command below is not available, but this is fine becaues I am testing against $? so i dont want to see the message " command not found" Ive tried outputting to /dev/null 2>&1 to no avail...see below ..

Does anybody knwo how i can stop this output to standard out ?

Code:
# zfs list | grep fred > /dev/null 2>&1
bash: zfs: command not found
#

# 2  
Old 05-22-2009
You're setting up redirection for that command, while the message is sent by the shell. You can either redirect that too by using exec, or you can do it the smart way:
Code:
if [ -x /path/to/zfs ]
then
    zfs list | grep ...
    ...
else
    # Whatever to be done if zfs isn't there
fi

By the way, grep knows the -q switch, which only sets $? based on whether the term is found or not, and produces no additional output.
# 3  
Old 05-22-2009
Quote:
Originally Posted by pludi
You're setting up redirection for that command, while the message is sent by the shell. You can either redirect that too by using exec, or you can do it the smart way:
Code:
if [ -x /path/to/zfs ]
then
    zfs list | grep ...
    ...
else
    # Whatever to be done if zfs isn't there
fi

By the way, grep knows the -q switch, which only sets $? based on whether the term is found or not, and produces no additional output.


Ok thanks, if I were to put that 'if' statement in there it would mean a bit of a change to the script so im particularly interested in the 'exec' method you mention.... ive tried

Code:
# exec zfs list | grep $HOME$ > /dev/null 2>&1
bash: exec: zfs: not found

but as you can see i still get the message, is this what you mean ??
# 4  
Old 05-22-2009
Even if it would mean changing some of your script, I don't think that it would be too much in relation to gained stability and maintainability, eg if your previous code was
Code:
zfs list | grep fred >/dev/null 2>&1
if [ $? -ne 0 ]...

a change would be as simple as
Code:
if [ -x /path/to/zfs ]
then
    zfs list | grep fred >/dev/null 2>&1
    zfs_found=$?
else
    zfs_found=1
fi
if [ $zfs_found -ne 0 ]...

If, however, you are absolutely sure that there is no other way, at the top of your script put the line
Code:
exec 2>/dev/null

which will redirect all stderr messages to /dev/null (even those that might indicate a serious problem)

Last edited by pludi; 05-22-2009 at 09:57 AM.. Reason: Code example
# 5  
Old 05-22-2009
Code:
zfs list 2> /dev/null | grep fred

# 6  
Old 05-22-2009
Quote:
Originally Posted by cambridge
Code:
zfs list 2> /dev/null | grep fred

Thats fantastic ...works perfectly..thanks cambridge

and thanks pludi for you help as well
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Handling standard error in condition

Testing this with KSH on RHEL The bellow code works but i can't seem to handle the exit status of the unix command when it fails... i wanted to put something like >/dev/null 2>&1 to manage standard output and standard error but it changes my logic and the code doesn't work cause it doesn't... (11 Replies)
Discussion started by: maverick72
11 Replies

2. Shell Programming and Scripting

Standard out and standard error

I need to run a cronjob and in the cronjob I execute a script that if there is an error produces standard error so I do /RUNMYSCRIPT 2> mylogfile.log However, if it runs correctly, I don't get a standard error output, I get a standard out output. How do I redirect both standard error and... (2 Replies)
Discussion started by: guessingo
2 Replies

3. Shell Programming and Scripting

Redirecting standard error issues.

Hello Friends, Good Day. I am trying to redirect a standard error to the bit bucket(/dev/null) but it is not working. Though, it is working fine in redirecting the standard output. Below is the output of my script without any redirection: $ ./CheckVSSLocks.sh... (16 Replies)
Discussion started by: singh.chandan18
16 Replies

4. UNIX for Dummies Questions & Answers

Redirect Standard output and standard error into spreadsheet

Hey, I'm completely new at this and I was wondering if there is a way that I would be able to redirect the log files in a directories standard output and standard error into and excel spreadsheet in anyway? Please remember don't use too advanced of terminology as I just started using shell... (6 Replies)
Discussion started by: killaram
6 Replies

5. Shell Programming and Scripting

Writing to standard error

Hi, I want to redirect the standard output to standard error whenever an error occurs for ex if then echo right else echo wrong fi I want to redirect the wrong to stderror .Adding a line 1>&2 will do that or is additional code to be added.How can i verify whether the output... (2 Replies)
Discussion started by: padmisri
2 Replies

6. Shell Programming and Scripting

Redirect standard error to input of other process, 2| ?

Hello, I would like to know if there is a shell in which operations such as 2| (redirect standard error of one process to the standard input of another one) exist? I know it is possible to do it in bash with things like: (process 2>&1) | other_process but I find it a bit intricate when... (3 Replies)
Discussion started by: chlorine
3 Replies

7. Shell Programming and Scripting

[BASH] redirect standard error and use it inside

Hi all, Maybe my question is too simple but till now i couldn't figure about a solution :( I have a bash script scheduled in cron: <cron time parameters> my_script.sh > result.log 2>&1 By this way i can have standard output and standard error in my result.log file Now i want my script... (2 Replies)
Discussion started by: Pescator
2 Replies

8. Shell Programming and Scripting

redirect only the standard error output to mail

I'm writing a script using file descriptor 2 (std error) to send an email only if the command fails or errors out but the script always emails me irrepective of whether it fails or not. It will not email the /tmp/check.error file output if doesn't error out just the mail with the subject "Cannot... (3 Replies)
Discussion started by: barkath
3 Replies

9. UNIX for Dummies Questions & Answers

Question from a newbie. How to redirect standard output

I have a program that is sending error text to the console and I need to redirect that output to a log file. I'm brand new to Unix and don't know how to do this. Any direction would be greatly appreciated. (1 Reply)
Discussion started by: ndemos
1 Replies

10. UNIX for Dummies Questions & Answers

Writing to Standard Error

Hi. I'm working on a project for a class, and there's one part of the project that is confusing me. It's a compression and decompression project, and after we write our code for compression, we need to write to standard error. (1) Size of original file (number of characters read... (1 Reply)
Discussion started by: sjung10
1 Replies
Login or Register to Ask a Question