problem, with if condition in function

Hi All,

I have a function which reads parameter and gets the value from config file.

The entry in the file can be either of two
Name=value or
Name[variant]=value

so if the variant is not present it should return me the generic value ie Name without variant.

I am first searching for variant in the file and taking the count using grep, so if it is > 0 then search for variant else generic.

But if condition is not evaluating properly and is always treating it as 0.

Below is the function.................Please HELP ME.............

______________________________________________________________
function getProp () {
name=$1;variant=$2
var=$(grep -c \b"$variant"\b "$RUNNING_CONFIG_FILE")
if [ $var -eq 0 ];then
{
awk -F '([ \t]=)|(=)' '
BEGIN {
value=""
exitcode=0
}
/^[ \t]#/ {next}
$1 ~ /'$1'$/{value=$2;exitcode=0}
END {print value}' "$RUNNING_CONFIG_FILE"
}
else
{
awk -F '([ \t]
=)|(=)' '
BEGIN {
value=""
OFS="="
exitcode=0
}
/^[ \t]#/ {next}
/'$name'\['$variant'\]/ || /'$name'\[[ ]'$variant'[ ]\]/ { if (NF == 3) {value=$2"="$3} else {value=$2}}
END {if ("'"$3"'" ~ /NoSpace/) {gsub("(^[ \t]
)|([ \t]*$)","",value);print value} else {print value}}' "$RUNNING_CONFIG_FILE"
}
fi
}
______________________________________________________________

var=$(grep -c "$variant" "$RUNNING_CONFIG_FILE")

Thanks for the reply:

I am using \b as a word boundary otherwise it will give me the count if it matches any characters in the variant.

How to deal with it.. I want a word boundary \<, \b not working there for me

try giving spaces

var=$(grep -c " $variant " "$RUNNING_CONFIG_FILE")

You are specifying the boundary character incorrectly. Observe:

vnix$ variant=ick
vnix$ echo \b"$variant"\b
bickb
vnix$ echo "\b$variant\b"
\bick\b
vnix$ echo "\\b$variant\\b"
\bick\b

Only the last one is correct and portable; the middle one might or might not blow up in your face.

We should really have a quoting FAQ here in the forums. In the meantime, read UNIX Shell Quote

Though, if you are running awk on the file anyway, why don't you put this logic in the awk script, too?