From: Carlos Hendson <skyclan@gmx.net>
To: gentoo-user@lists.gentoo.org
Subject: Re: [gentoo-user] 'if echo hello' in .bashrc
Date: Fri, 08 May 2009 18:22:07 +0200 [thread overview]
Message-ID: <4A045C2F.90809@gmx.net> (raw)
In-Reply-To: <200905081610.20300.alan.mckinnon@gmail.com>
Alan McKinnon wrote:
> On Friday 08 May 2009 16:01:14 Mike Kazantsev wrote:
>> On Fri, 8 May 2009 14:38:58 +0100
>>
>> Stroller <stroller@stellar.eclipse.co.uk> wrote:
>>> To find the part to which I refer you'll need to scroll down about
>>> halfway through that page to "Colorize grep"; the author advises adding:
>>>
>>> if echo hello|grep --color=auto l >/dev/null 2>&1; then
>>> export GREP_OPTIONS='--color=auto' GREP_COLOR='1;32'
>>> fi
>>>
>>> to ~/.bashrc
>>>
>>> Why does he echo hello, please?
>> Some greps (like BSD one) might not support '--color' option, so "echo
>> hello|grep --color=auto l" will return error code, skipping if clause,
>> and won't break grep operation by adding an unsupported option.
>
> except that STDERR is combined with STDOUT and sent to /dev/null so the script
> will never get it, the if is always true and the entire check is redundant.
> Better would be
>
> if echo hello|grep --color=auto l >/dev/null ; then
>
The redirection of output doesn't affect the return code of grep in the
above case.
Grep's return code is determined by matching 'l' against the output of
echo hello.
The desired effect of the above code is to evaluate if the --color
option is supported by grep on the system.
The STDERR and STDOUT redirection is an attempt to not pollute the
systems screen when performing that test.
To illustrate:
1. A system that supports --color
$ if echo hello|grep --color=auto l >/dev/null 2>&1; then echo "Grep
returned : $?"; else echo "Grep returned : $?"; fi
Grep returned : 0
2. A system that doesn't support --color (simulated by supplying
--unspported as an option to grep)
$ if echo hello|grep --unsupported l >/dev/null 2>&1; then echo "Grep
returned : $?"; else echo "Grep returned : $?"; fi
-bash: echo: write error: Broken pipe [1]
Grep returned : 2
3. Just to complete the examples, the result of grep not matching echo's
output but still supporting the --color option. (achieved by search
"hello" for the letter 'z')
$ if echo hello|grep --color z >/dev/null 2>&1; then echo "Grep
returned : $?"; else echo "Grep returned : $?"; fi
Grep returned : 1
Regards,
Carlos
[1] The reason an error message is shown here is because it's bash
that's reporting the broken pipe error. Grep's error message was
redirected to /dev/null, which was:
grep: unrecognized option '--unsupported'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
So even when the system doesn't support --color, that original code will
pollute the screen with bash's error message.
next prev parent reply other threads:[~2009-05-08 17:22 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-08 13:38 [gentoo-user] 'if echo hello' in .bashrc Stroller
2009-05-08 14:01 ` Mike Kazantsev
2009-05-08 14:09 ` Stroller
2009-05-08 14:10 ` Alan McKinnon
2009-05-08 14:38 ` Christian
2009-05-08 14:43 ` Alan McKinnon
2009-05-08 14:57 ` Eray Aslan
2009-05-08 14:59 ` Etaoin Shrdlu
2009-05-08 14:51 ` Alan McKinnon
2009-05-08 15:13 ` Etaoin Shrdlu
2009-05-08 16:22 ` Carlos Hendson [this message]
2009-05-08 18:08 ` James Rowe
2009-05-08 18:05 ` Mike Kazantsev
2009-05-09 10:15 ` Stroller
2009-05-09 10:41 ` Etaoin Shrdlu
2009-05-09 10:43 ` Stroller
2009-05-09 11:13 ` Etaoin Shrdlu
2009-05-09 14:38 ` Joerg Schilling
2009-05-09 11:38 ` Mike Kazantsev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A045C2F.90809@gmx.net \
--to=skyclan@gmx.net \
--cc=gentoo-user@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox