|
From: | Matthew Woehlke |
Subject: | Re: exit status in man page |
Date: | Tue, 03 Apr 2007 09:58:00 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070221 Thunderbird/1.5.0.10 Mnenhy/0.7.4.0 |
Brent Barker wrote:
my man page (1) for "grep" states:Normally, exit status is 0 if selected lines are found and 1 otherwise. But the exit status is 2 if an error occurred, unless the -q or --quietor --silent option is used and a selected line is found. I'm using grep in a script, found here: #!/bin/bash if echo "$1" | grep / then echo "returned 1" else echo "returned 0" fi It seems that grep returns 1 if it finds the pattern, 0 if it does not. This seems to be contrary to what is said in the man page. The behavior is the same if I add the -q option.
Your assumptions are wrong. 0 is considered "success", anything else is considered failure. So your script above will echo "returned 1" when grep actually returns 0, and will echo "returned 0" when grep returns anything other than 0. Try this instead:
echo "$1" | grep / ; echo "returned $?"This will display the actual return value, be it 0, 1, 2, 67*, or any other number. (*I don't think grep ever returns 67 :-). But some other program might.)
-- Matthew Obscurity: +5
[Prev in Thread] | Current Thread | [Next in Thread] |