Sponsored Content
Full Discussion: How to fix this bug?
Top Forums Shell Programming and Scripting How to fix this bug? Post 302864363 by ken6503 on Wednesday 16th of October 2013 12:42:02 PM
Old 10-16-2013
How to fix this bug?

Hi gurus,

I have script as below:
Code:
#!/bin/ksh
        while :
        do
                cat /dev/null > srcfile
                exit_time=`TZ=GMT-20 date +%Y%m%d1950`
                cur_time=`date +%Y%m%d%H%M`
                flag=1
                if [ ! -f unprocessed ]; then
                        echo "FILE CHECKING STARTING" >  unprocessed
                fi

                while IFS="," read code desc file

                        do

                        echo $file
                        echo $code
                        if [ -f $file* ] ; then
                                ofile=`ls -1tr|head -1`
                                mth=`ls -l $ofile* |awk '{print $6}'`
                                dy=`ls -l $ofile* |awk '{print $7}'`
                                time=`ls -l $ofile* |awk '{print $8}'`
                                echo "$code, $file, $mth, $dy, $time, FOUND"
                                echo "$code, $file, $mth, $dy, $time" >> srcfile
                        else
                                flag=0
                                echo "$code, $file , NOT FOUND" >>notexist
                        fi

                        done < list
                
                echo "Variable flag values is " $flag
                end_time=`date +"%m-%d-%Y:%T"`

                if [ $flag -eq 1 ]; then
                        echo "ALL FEED FOUND" >notexist
                        echo "File checking complete. All files arrived before $end_time" > filecheckingstatus       
                        exit 0
                else
                        if [ $cur_time -ge $exit_time ]; then
                                cat unprocessed >> filecheckingstatus
                                exit 20
                        fi
                fi

                echo "Current day and time is " `date +%d%H%M`

                sleep 120

                echo "Current day and time is " `date +%d%H%M`
        done

in my file "list" only one record and there is no this file in current dir.
Code:
abc,aaa,file1

when running debug, I got below:
Code:
+ cat /dev/null
+ date +%Y%m%d1950
TZ=GMT-20
exit_time=201310171950
+ date +%Y%m%d%H%M
cur_time=201310161238
flag=1
+ [ ! -f unprocessed ]
IFS=,
+ read code desc file
+ echo file1
file1
+ echo abc
abc
+ [ -f file1* ]
+ cat /dev/null
flag=0
+ echo abc, file1 , NOT FOUND
IFS=,
+ read code desc file
+ echo Variable flag values is  1
Variable flag values is  1
+ date +%m-%d-%Y:%T
end_time=10-16-2013:12:38:40
+ [ 1 -eq 1 ]
+ echo ALL FEED FOUND
+ echo File checking complete. All files arrive on time
File checking complete. All files arrive on time
+ echo File checking complete. All files arrived before 10-16-2013:12:38:40
+ exit 0

for the value of $flag, it should be 0, but it return 1 in my current script.
Is this because the while loop has one more read (see highlighted in blue) which causes the variable has no value been assigned, so it pick up ini value?
any body can help this

Thanks in advance.

Last edited by vbe; 10-16-2013 at 01:53 PM..
 
All times are GMT -4. The time now is 06:45 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy