'grep -q whatever' returns 0 if there was a match and non-zero if there was not a match. The OP is probably doing a wget -N --no-check-certificate https://myserver.net/file.txt 2>&1 >/dev/null | egrep -q '[Nn]ot\ [retrieving|Found]' && exit if [ $? -eq 0 ]; then # found ... else # not found ... fi
The '&& exit' is redundant. Single quotes mean "this literal string including any regexs as a string. The OP should probably have used: wget -N --no-check-certificate https://myserver.net/file.txt 2>&1 >/dev/null | egrep -q "[Nn]ot [retrieving|Found]" Except that '[]' is a list of characters to match against, not a set of words to match against. This might be better. wget -N --no-check-certificate https://myserver.net/file.txt 2>&1 >/dev/null | egrep -iq "not retrieving|not found" CC -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Collins, Kevin [MindWorks] Sent: Thursday, 27 December 2007 5:54 AM To: Red Hat Enterprise Linux 5 (Tikanga) discussion mailing-list Subject: RE: [rhelv5-list] Regular Expressions on RHEL 5 Your regular expression is not very good: egrep -q '[Nn]ot\ [retrieving|Found]' ^ You are quoting the string, so why are you escaping the space? egrep -q '[Nn]ot\ [retrieving|Found]' ^^^^^^^^^^^^^^^^ This matches any of one the characters listed, NOT the strings "retrieving" or "Found" - for that, you would want something like: egrep -q '[Nn]ot (retrieving|Found)' Third, you are telling the shell "if this command (egrep -q ...) returns a successful return code, then exit (&& exit). So, how do you know what the reurn code is? The "-q" tells egrep to print nothing, so you would not see any difference. Which shell are you using? Korn shell (ksh) changed between RHEL4 and RHEL5 from pdksh to actual Korn shell... could be that pipelines have slightly different behavior. Kevin -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ian Lists Sent: Wednesday, December 26, 2007 1:43 PM To: [email protected] Subject: [rhelv5-list] Regular Expressions on RHEL 5 I have a strange situation where a script that works on RHEL 4 and Fedora 8 doesn't work with RHEL5. The piece of the script that is failing is very simple, it's just a wget with grep. wget -N --no-check-certificate https://myserver.net/file.txt 2>&1 >/dev/null | egrep -q '[Nn]ot\ [retrieving|Found]' && exit It doesn't seem to care about matching the grep results on RHEL5, it just always exits. The script should just continue on if it doesn't get a hit on the grep statement. Anyone have any suggestions? Thanks, Ian _______________________________________________ rhelv5-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/rhelv5-list _______________________________________________ rhelv5-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/rhelv5-list NOTICE: This email and any attachments are confidential. They may contain legally privileged information or copyright material. You must not read, copy, use or disclose them without authorisation. If you are not an intended recipient, please contact us at once by return email and then delete both messages and all attachments. _______________________________________________ rhelv5-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/rhelv5-list
