Hello Luggers
The following function takes 2 arguments, "a filename" and "number of fields". It checks the number of field of each record against the second argument. If it doesn't match, it increase the value of the variable "NM_CNT" by 1. But, once the loop has finished execution, the value of this variable gets reset to "0".
verify_record()
{
FILE=$1
FIELDS=$2
cat $FILE | while read RECORD
do
if [ `printf "$RECORD" | awk -F\| '{ print NF }'` -ne $FIELDS ]; then
NM_CNT=`expr $NM_CNT + 1`
printf "NM_CNT=$NM_CNT\n"
fi
done
printf "NM_CNT=$NM_CNT\n"
return $NM_CNT
}
Here is the output. The maximum value of NM_CNT in the loop is 2, but once it comes out of the loop, its value becomes "0".
$ verify_record temp/a 2
(in loop)NM_CNT=1
(in loop)NM_CNT=2
NM_CNT=0
Can anybody help me to solve this problem? Currently, I redirect the value of this variable in a file for using it outside the function. I run this script under the "sh" environment on SUN Solaris 8.
Regards
SV
---------------------------------
Jiyo cricket on Yahoo! India cricket
Yahoo! Messenger Mobile Stay in touch with your buddies all the time.