#!/bin/bash
dat_dir=./glmis_exp_data
ctl_dir=./control_file
log_dir=./log_file
sed 's/|/ /g' $dat_dir/glmis_tables_counts.dat |tr A-Z a-z >$dat_dir/glmis_tables_counts_compare.dat
while read table_line
do
table_name=`echo $table_line|awk '{print $1}'|tr A-Z a-z`
awk '/infile/ {print $2}' $ctl_dir/$table_name.ctl | sed "s/'.\/glmis_exp_data\///g"| sed "s/.dat'//g" >ctl_tmp
glmis_rows=0
table_rows=0
while read table_row
do
table_rows=`awk '/'$table_row' / {print $2}' $dat_dir/glmis_tables_counts_compare.dat`
echo $glmis_rows
echo $table_rows
glmis_rows=`expr $glmis_rows + $table_rows`
echo $glmis_rows
done
load_row=`awk '/Rows successfully loaded/ {print $1}' $log_dir/$table_line.log`
if [ "$glmis_rows" -eq "$load_row" ] ;then
echo "$table_line:glmis_rows=load_row=$glmis_rows"
else
echo "$table_line:error"
fi
done
执行结果是:
。
。
。
0
52517.0
expr: non-numeric argument
s_ywrz_rh:error
0
23673.0
expr: non-numeric argument
s_ywrz_zt:error
主要的问题就是红色字体那部分
ljx198308 于 2010-10-29 09:57:22发表:
好的,谢谢,后面我把
glmis_rows=`expr $glmis_rows + $table_rows`
改成
let glmis_rows+=table_rows就可以了,楼上的也是一种方法,共享给其它有需要的朋友
linuxcn 于 2010-10-28 19:22:16发表:
expr 只能处理整数
将这一句
table_rows=`awk '/^s_ywrz / {print $2}' ./glmis_exp_data/glmis_tables_counts_compare.dat`
改为
table_rows=`awk '/^s_ywrz / {printf "%d", $2}' ./glmis_exp_data/glmis_tables_counts_compare.dat`
ljx198308 于 2010-10-28 11:14:24发表:
table_rows=`awk '/^s_ywrz / {print $2}' ./glmis_exp_data/glmis_tables_counts_compare.dat`
echo $table_rows
table_rows=`expr $table_rows + 2`
echo $table_rows
如果单单这个的话,第一个就有输出,第二个出错
6542554.0
expr: non-numeric argument
就是用AWK给他值后没办法去相加减