I believe that this is a problem with using shell quoting and spacing.

The following code works better for me:

========================
g()
{
if [ -n "$2" ]
then
 i=
 for s in $2
 do
        if [ -n "$i" ]
        then
            i="$i --include=*.$s"
        else
            i="--include=*.$s"
        fi
 done
 else
        i='--include=*.txt --include=*.ini --include=*.*sh --include=*.c*
--include=*.h --include=*.js --include=*.reg'
fi
grep -P -e "$1" -r $i
}
========================

The two changes I made:
1) Avoid putting a space at the front of the first "--include=*.$s" argument.
2) Double quote, not escaped single quote, the "$1" parameter to grep.

The parameter "  --include=*.ini" was not a valid "--include" argument to
grep; rather it looked like a filename to grep, as its first character was a 
space.

The escaped single quotes around the "$1" parameter meant that you were
not looking for the three character pattern "sys", but rather for the five
character pattern "'sys'" (which is less likely to have appeared in your
test data.)

-- 
                Paul Jackson
                p...@usa.net



Reply via email to