problem, with if condition in function


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting problem, with if condition in function
# 1  
Old 04-24-2008
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
}
______________________________________________________________
# 2  
Old 04-24-2008
var=$(grep -c "$variant" "$RUNNING_CONFIG_FILE")
# 3  
Old 04-24-2008
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
# 4  
Old 04-24-2008
try giving spaces

var=$(grep -c " $variant " "$RUNNING_CONFIG_FILE")
# 5  
Old 04-24-2008
You are specifying the boundary character incorrectly. Observe:

Code:
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?
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

If condition problem

Hi All, I am using below if condition to check whether null is passed as a parameter to the program if or ; then echo "ABC">>$FILE else echo "CDF">>$FILE fi However it is saying me null=null command not found . Please help me with this (9 Replies)
Discussion started by: Hypesslearner
9 Replies

2. Shell Programming and Scripting

Function into a condition ?

Hello, How can i put a function into a condition ? g1 is my function I tested this in vain if g1 $1 $2 $3 -ne 0 ];thenif ;then Thanks for yours suggestions (18 Replies)
Discussion started by: amazigh42
18 Replies

3. Shell Programming and Scripting

if condition problem!

Hi All, I'm a newbie here, I'm just wondering how can i disable my 1st sed command if there's no file found on Yes_Directory and process instead the No_Directory because there's a file found on it. Yes_Directory="/home/yes/ No_Directory="home/no/ script: if ; then sed -i... (8 Replies)
Discussion started by: nikki1200
8 Replies

4. Shell Programming and Scripting

problem with if condition

Hi, I'm writing a bash script and i have a condition that goes if then break fi but, when i go to run it, i come across this line 10: ' where line 10 is the if I don't know what's going on :( (2 Replies)
Discussion started by: channyboy
2 Replies

5. Programming

performance issues of calling a function in if condition

Hi, I have written a program in C and have to test the return value of the functions. So the normal way of doin this wud b int rc rc=myfunction(input); if(rc=TRUE){ } else{ } But instead of doing this I have called the function in the if() condition. Does this have any... (2 Replies)
Discussion started by: sidmania
2 Replies

6. Shell Programming and Scripting

problem in if then else condition

Hi , I am trying the following simple script . But it is always giving 1 output. Dont know why #!/bin/sh find . -name "a.log" if ; then echo "1" else echo "0" fi Kindly advice. it is giving 1 output even when the a.log file is not there (26 Replies)
Discussion started by: himvat
26 Replies

7. Shell Programming and Scripting

race condition with wait() function

Hi, I'm currently writing a bash script, that starts multiple threads: ____________________ #!/bin/bash loop=0 while((loop!=10)) do thread & ((loop++)) done #wait for all sub-processes (thread) to finish wait ___________________ Now I want to know, what happens, if a... (2 Replies)
Discussion started by: tho99
2 Replies

8. Shell Programming and Scripting

problem in if condition

hi, actully i need the belp for the below. host_list=" Host1 host2 host3 host4 " n=`hostname` i need to put the condition like the below if n is among the host mention in the host_list if then #some stugg else # some other stuff fi (1 Reply)
Discussion started by: mail2sant
1 Replies

9. Shell Programming and Scripting

problem with if condition

hi, :) pls consider the following if statement if //g') ] then ........ else ....... when i execute the script i am getting the following error '(' unexpected I am not able to find the mistake. could anybody tell where i did mistake. cheers RRK (13 Replies)
Discussion started by: ravi raj kumar
13 Replies
Login or Register to Ask a Question