Condition checking issue while if


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Condition checking issue while if
# 22  
Old 07-23-2013
this time i have used this
Code:
if [ "end_ct" = "END CAT" ] ; then

but instead of returning true condition, it is falling to the else part

Code:
if [ "end_ct" = "END CAT" ] ; then
echo $end_ct
else
echo "value not found"
fi

it should echo $end_ct but it is returning echo "value not found"
# 23  
Old 07-23-2013
you forgot to add $ in front of end_ct in the expression of if condition.

print the value of $end_ct just before the if statement to check what value it is getting.
just add a line before if

Code:
echo "end_ct = {$end_ct}"
if [ "$end_ct" = "END CAT" ]; then
      echo $end_ct
else
      echo "value not found"
fi

and dont forget to use the curly brackets {}. it easy to figure out if any extra spaces are there in the end_ct value.

so the output should be

Code:
end_ct = {END CAT}
END_CAT

# 24  
Old 07-23-2013
as suggested, here is the updated code:
Code:
echo "end_ct = {$end_ct}"
if [ "$end_ct" = "END CAT" ] ; then
echo $end_ct
else
echo "value not found"
fi

and here is the output coming now:
Quote:
bash-3.2$ sh bravo_main_refresh.sh
sh bravo_main_refresh.sh
+ sh bravo_main_refresh.sh
TRIM(DESCR ---------- END CAT
COUNT(*) ---------- 1
end_ct = {
TRIM(DESCR
----------
END CAT}
value not found
# 25  
Old 07-23-2013
so now you can see why u r getting wrong output..

your end_ct contain the value inside the curly brackets {} i.e.
Code:
"TRIM(DESCR
----------
END CAT"

so end_ct and END CAT values are different and the output is value not found.. so check out your sql query and the result its returning. right now ur sql query is returning "TRIM(DESCR
----------
END CAT" value and not "END CAT".
# 26  
Old 07-23-2013
yeah, i have seen this. but it is obvious that it will return column name along with the value.
Code:
end_ct=`sqlplus -s $ORACLE_USER/$ORACLE_PASS@$ORACLE_SID   << EOF
                select trim(description) from bravo_statistics
                where trunc(time_stamp)=trunc(sysdate)-5
                and description='END CAT';

how to get rid off from this situation now, please help

---------- Post updated at 10:07 AM ---------- Previous update was at 10:01 AM ----------

i have used another variable to check the value of end_ct and comparing these 2 variables now. it is returning the exact value which i require
Code:
a=$end_ct

Code:
and further my condition is 
if [ "$end_ct" = "$a" ] && [ $emtr_cnt -eq 1 ] ; then
echo $end_ct
else
echo "value not found"
fi


but whille using && condition it is showing some other error:
bravo_main_refresh.sh: test: unknown operator ----------

i am sorry for this, but my logic is incorrect for the first statement too. because i need to compare value with END CAT. please suggest how to compare value of a variable returning from a select statement.

Last edited by lovelysethii; 07-23-2013 at 01:49 AM..
# 27  
Old 07-23-2013
just send the output to a temporary file instead of storing in a variable using

Code:
sqlplus -s $ORACLE_USER/$ORACLE_PASS@$ORACLE_SID   << EOF > sql_output.txt
                select trim(description) from bravo_statistics
                where trunc(time_stamp)=trunc(sysdate)-5
                and description='END CAT';
EOF

end_ct=`sed -n '3p' sql_output.txt`

just check the content of the sql_output.txt file and see in which line the output of the sql query occurs i.e. the END CAT value comes in which line and accordingly use the line number in the sed command.. i assumed the actual output (excluding the column name and the ---------) appears in the 3rd line so i have used 3p in the sed command. change the 3p to appropriate line number after checking the value inside sql_output.txt.
This User Gave Thanks to Little For This Post:
# 28  
Old 07-23-2013
i have modified my code as suggested:
Code:
end_ct=`sqlplus -s $ORACLE_USER/$ORACLE_PASS@$ORACLE_SID   << EOF > sql_output.txt
                select trim(description) from bravo_statistics
                where trunc(time_stamp)=trunc(sysdate)-5
                and description='END CAT';
EOF`
echo $end_ct;
emtr_cnt=`sqlplus -s $ORACLE_USER/$ORACLE_PASS@$ORACLE_SID   << EOF >> sql_output.txt
                select count(*) from mrs.bill_cal
                where trunc(actual_run_date)=trunc(sysdate)-4;
EOF`
echo $emtr_cnt;
#echo "end_ct = {$end_ct}"
a=`sed -n '4p' sql_output.txt`
b=`sed -n '9p' sql_output.txt`
echo "$a"
echo "$b"
if [ "$a" = "END CAT" ] && [$b -eq 1 ] ; then
echo "value found"
else
echo "value not found"
fi

now i am getting my desired output, please check if any syntax error is there otherwise i am all set. thanks for your help
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Checking for null condition in a UNIX variable

i have this code for i in `cat sql_output.txt` do -- some script commands done sql_output.txt has 1 column with employee_ids If the sql_output.txt is null then the do loop should not execute. How can i implement this. for i in `cat sql_output.txt` If i is null or empty then ... (5 Replies)
Discussion started by: rafa_fed2
5 Replies

2. Shell Programming and Scripting

Condition checking in UNIX

i have a script where i have to find the age of a file, if then echo "dnb file is present for the monthly load" >> $RUNLOG dnb="1" else echo "dnb file has not arrived yet" > $ERRLOG dnb="0" fi i know the file is available so... (3 Replies)
Discussion started by: lovelysethii
3 Replies

3. Shell Programming and Scripting

Checking file existence along with condition

Hi am trying to write a script which find the existence of a file from a find command output and perform a task if the file exists. Help me out with the correct syntax . Am trying with the following one but unable to get the output. if then <some tasks> else echo "file not exists" fi (5 Replies)
Discussion started by: rogerben
5 Replies

4. Shell Programming and Scripting

Multiple condition checking in bash

Hi All, I am trying to check if two variables have value assigned to it. i am doing it like if ] then echo "Please specify either single hostname or host file for the report" usage exit fi But its not working for it.Even i specify values for both variables it dont go... (6 Replies)
Discussion started by: kailash19
6 Replies

5. Shell Programming and Scripting

create separate file after checking condition..

Problem : I want to create a separate file for country list if condition is true. Please help. ***************************************************** Input file: SV-INCR-139302-365540488-201104090934.sqllog SV-INCR-1082-552793184-201104040805.sqllog SV-INCR-1077-855045741-201104040805.sqllog... (4 Replies)
Discussion started by: humaemo
4 Replies

6. Shell Programming and Scripting

Cutting specific line of a file by checking condition

testfile.csv 0","1125209",,"689202CBx18888",,"49",,,"NONMC",,,,,"01112010",,,,,,,"MTM- "1","",,"689202ABx19005",,"49",,,"NONMC",,,,,"01072010",,,,,,,"MTM- testfile.csv looks like above format if the second column is null then get 23rd column and store in a different varible .. add all the... (1 Reply)
Discussion started by: mgant
1 Replies

7. Shell Programming and Scripting

Unzip file By checking condition.

Hi.. Gurus I Have a list of .zip files in a directory. I want to check whether each .zip file having some particular file or not (say .jsp) if it's having .Jsp file then create a directory as per the .zip file and extract the content to that directory except the .jsp file, If .zip not having... (3 Replies)
Discussion started by: posix
3 Replies

8. Shell Programming and Scripting

sed solution for condition checking

Hi all , Recently i came across this in FAQ's. I have a file cat rem.txt sreedhar 20 sreedhar 10 sreedhar 15 sreedhar 18 sreedhar 16 sreedhar 30 I have to replace sreedhar with "Sridhar" if the second parameter is > 18. I need to do it in "sed" only. I am wondering how this... (4 Replies)
Discussion started by: panyam
4 Replies

9. Shell Programming and Scripting

Checking condition inside the loop

Hi all, I have one clarification i am using the loop which will process for each record .suppose there is f ailure in the first record it need to send mail and process the next .my code: defcount=`cat <filename>|wc -l` while ] do if <some condiotion> then echo "mail" fi done so... (1 Reply)
Discussion started by: ithirak17
1 Replies

10. Shell Programming and Scripting

Condition checking

Dear all That's another problem from me, i wanna do a lot of if statement checking for correct input by user, will be prompt input again if the input not meet the requirement defined by If or while statement... like this one .... while I know it's less effiency write the program... (14 Replies)
Discussion started by: trynew
14 Replies
Login or Register to Ask a Question