Need help with if statement


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Need help with if statement
# 1  
Old 02-02-2011
Network Need help with if statement

Hi Forum Im having trouble getting my script to work
The problem seem to be that the if statements in the MAIN is not testing the variable currentLineValue at all and completely skips it i dont know why this is happing.
Here is my code
Code:

############################
##this is my q1 program #
#############################
########
##Purpose
##########
##Is to read input from#
##a colon delimited file. bad input is#
##redirected to q1Bad.dat.Good input is#
##redirected to q1Good.dat#
#
##################################
##functions
#################################
#
##this function test to see weather
##the productId is valid
#################################
validID ()
{ 
 if [ ${?} -ne 0 ]; then
 {
  currentLineValid='false' 
  whichFieldErrored='ProID'
 }
 fi 
  
}
#################################
##this function test to see weather
##the productName is valid
#################################
validProductName ()
{
 echo ${1} | grep -E "[A-Z]{2}([:punct:][:alnum:])+"

 if [ ${?} -ne 0 ]; then
 {
  currentLineValid='false' 
  whichFieldErrored='ProNAME'
 }
 fi

}
#################################
##this function test to see weather
##the productCost is valid
#################################
validCost ()
{
 echo ${1} | grep -E "[1-9][0-9]{1,}([]+|.([0-9]|[0-9][0-9]))"

 if [ ${?} -ne 0 ]; then
 {
  currentLineValid='false' 
  whichFieldErrored='ProCOST'
 }
 fi
}
################################
#this function finds the line
#number the error occured on
#by passing the whole line has an
#argument
################################
findingLineNumCausingError ()
{
 errorLineNumberIs=`grep -n ${1} q1.dat | cut -d: -f1` 
} 

################################
#this function finds which field 
#the error has occured on  and 
#then redirects bad input and 
createErrorString ()
{
 case ${whichFieldErrored} in
 
  ProID) errorMessage=`echo ${errorLineNumberIs} : Invalid Product ID`
   ;;
 
  ProNAME) errorMessage=`echo ${errorLineNumberIs} : Invalid Product Name` 
  ;;
 
  ProCOST) errorMessage=`echo ${errorLineNumberIs} : Invalid Product Cost`
  ;;
 
 esac
}
################################
#this function redirect the good 
# input q1Good.dat
################################
redirectGoodFileInput ()
{
 printf "%s\n" ${1} >> q1Good.dat
}
################################
#this function redirect the bad 
# input q1Bad.dat
################################
redirectBadFileInput ()
{
 printf "%s\n" ${1} >> q1Bad.dat
 printf "%s\n"  ${errorMessage} >> q1Bad.dat
}
################################
#this function add 1 to the  
#errorLineNumberIs variable 
################################
countError ()
{
 countError=`expr ${countError} + 1`
}
################################
#this function sets errorLineNumberIs   
#variable to 0 
################################
setCountError ()
{
 countError=0
}
################################
#this function prints an error   
#message if the countError variable
# is equal to  
################################
printErrorMessage ()
{
 if [ ${countError} -eq 1 ]; then
 {
   printf "%s\n" ${errorMessage}
 }
 fi 
 
}
################################
#this function set the variable   
#currentLineValid to true
################################
setCurrentLineValidToTrue ()
{
 currentLineValid=true
}
################################
#this function finds the number 
#
################################
checkWhichFieldErroredNum ()
{
  findingLineNumCausingError ${1}
  createErrorString   
}

#####################################
#MAIN
####################################

###################
#setting variables
###################

setCountError
setCurrentLineValidToTrue

while read input
do
 
 #debug message 
 printf "%s\n" "out of 1st if" 

 if [ "${currentLineValue}" = "true" ]; then 
 { 
  #debug message 
  printf "%s\n" "in of 1st if"
  field1=`echo ${input} | cut -d: -f1` 
  validID "${field1}"
 } 
 fi 
 
 #debug message 
 printf "%s\n" "out of 2nd if" 

 if [ "${currentLineValue}" = "true" ]; then
 {
  #debug message 
  printf "%s\n" "in of 2nd if"
  field2=`echo ${input} | cut -d: -f2` 
  validID "${field2}"
 }
 fi 
 
 #debug message 
 printf "%s\n" "out of 3rd if"
 
 if [ "${currentLineValue}" = "true" ]; then
 {
  
  #debug message 
  printf "%s\n" "in of 3rd if"
  field3=`echo ${input} | cut -d: -f3` 
  validID "${field3}"
 }
 fi 

 #debug message 
 printf "%s\n" "out of 4th if"
 
 if [ "${currentLineValue}" = "true" ]; then
 {
   #debug message 
   printf "%s\n" "in of 4th if" 
   redirectGoodFileInput "${input}"
 }
 fi 
 
 #debug message 
 printf "%s\n" "out of 5th if"
 
 if [ "${currentLineValue}" = "false" ]; then
 {
   #debug message 
   printf "%s\n" "in of 5th if"
   checkWhichFieldErrored "${input}" 
   redirectBadFileInput "${input}"
 }
 fi 
 
 countError
 printErrorMessage
 setCurrentLineValidToTrue

done < q1.dat

here is my output
Code:
out of 1st if
out of 2nd if
out of 3rd if
out of 4th if
out of 5th if

out of 1st if
out of 2nd if
out of 3rd if
out of 4th if
out of 5th if
out of 1st if
out of 2nd if
out of 3rd if
out of 4th if
out of 5th if
out of 1st if
out of 2nd if
out of 3rd if
out of 4th if
out of 5th if
out of 1st if
out of 2nd if
out of 3rd if
out of 4th if
out of 5th if
out of 1st if
out of 2nd if
out of 3rd if
out of 4th if
out of 5th if
out of 1st if
out of 2nd if
out of 3rd if
out of 4th if
out of 5th if

what am i doing wrong
any help will be much appreciated and thank you in advance
# 2  
Old 02-02-2011
Where does currentLineValue get set? There is also a currentLineValid.
# 3  
Old 02-02-2011
sorry the name of the variable is not currentLineValue its currentLineValid and it get set just before the while loop in the main i use a function that i made called setCurrentLineValidToTrue () which sets it to the currentLineValid to true
# 4  
Old 02-02-2011
But currentLineValue is also being used in your script? For example:
Code:
if [ "${currentLineValue}" = "true" ]; then

# 5  
Old 02-02-2011
f#$% im so stupid didnt realize that. no wonder why it wasnt evaluating the currentLineValid variable that i had set in my function because in the if statement i had used currentLineValue which is a completely different variable name to the one im suppose to be using >: (. oh thank you so much for pointing that out. Smilie

Last edited by ShinTec; 02-02-2011 at 05:25 AM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert Update statement into Insert statement in UNIX using awk, sed....

Hi folks, I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex. I have a bunch of update statements with all columns in a file which I need to convert into insert statements. UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies

2. Shell Programming and Scripting

If statement

Hi, I have this code here. Its suppose to do something when certain condition is met, I'm pretty sure at least one of the condition will be meet somewhere in the loop but it always go to else part of the script. Is something wrong on this script? age_list=`tar -tvf /home/dir/$tarfile... (4 Replies)
Discussion started by: erin00
4 Replies

3. Shell Programming and Scripting

Statement

${PFILE}.backupfile Please tell me what the above statement means? (1 Reply)
Discussion started by: lg123
1 Replies

4. Shell Programming and Scripting

If statement help

I'm trying to create a script that would allow me to identify the sucessful removal of a file. Here's what i put together so far, let me know if it's correct or not. FILE_NAME="cactus.dat" FILE_FIND='find / -name $FILE_NAME' if ;then echo "cactus.dat was not removed successfully" ... (3 Replies)
Discussion started by: sdpinoy
3 Replies

5. UNIX for Dummies Questions & Answers

If statement (yes or no)

I have the program: #!/bin/ksh echo Please enter yes or no read n typeset -l n if ] then echo My name exit else echo delete my name fi Question: How can I make the program accept only the word "yes" or "no" otherwise it will ask the user to re-enter? Thanks! (7 Replies)
Discussion started by: bobo
7 Replies

6. Shell Programming and Scripting

How is use sselect statement o/p in insert statement.

Hi All, I am using Unix ksh script. I need to insert values to a table using the o/p from a slelect statement. Can anybody Help! My script looks like tihs. ---`sqlplus -s username/password@SID << EOF set heading off set feedback off set pages 0 insert into ${TB_NAME}_D... (2 Replies)
Discussion started by: nkosaraju
2 Replies

7. Shell Programming and Scripting

If statement - How to write a null statement

In my ksh script, if the conditions of a if statement are true, then do nothing; otherwise, execute some commands. How do I write the "do nothing" statement in the following example? Example: if (( "$x"="1" && "$y"="a" && "$z"="happy" )) then do nothing else command command fi... (3 Replies)
Discussion started by: april
3 Replies

8. Shell Programming and Scripting

statement

I want to write a program that would convert yard to feet and feet to yard. i.e 1 yard = 3 * feet Echo "enter a" read a expr a *3 The trick is that I want to give the user some options. After the conversion from yard to feet is done, I want to ask the user whether or not he/she wants to... (10 Replies)
Discussion started by: Ernst
10 Replies

9. Shell Programming and Scripting

if statement

can someone please tell me what is wrong with the below. i'm trying to get a script to run if the content of a variable is either small letter y or capital letter Y. if then whatever fi (4 Replies)
Discussion started by: Terrible
4 Replies

10. Shell Programming and Scripting

If statement

Hi, I have a statement in shell script which i am writing below: if ] then ..... What is the meaning of -a option in files, meaning of the statement in the if condition ] means. Thanks (3 Replies)
Discussion started by: dreams5617
3 Replies
Login or Register to Ask a Question