On 3/16/06, Vidyadutt S vidyadutt_s@yahoo.com wrote:
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".
This problem is due the piping in the following line ;)
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"
You can avoid it by changing the about code to..
for RECORD in `cat tst|awk '{print NF}'`; do if [ $RECORD -ne $FIELDS ]; then NM_CNT=$(($NM_CNT+1)) printf "NM_CNT=$NM_CNT\n" fi done
-- ___________________________________________
-----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/S C++++ P+ L+++(++++) E++(+++) W++ N+++ w--- e+++ a-- y d- s:++ r-- b+Y+ G+++ ------END GEEK CODE BLOCK------ decode with www.ebb.org/ungeek