红联Linux门户
Linux帮助

数值计算问题

发布时间:2010-10-28 10:59:22来源:红联作者:ljx198308
大家好,我现在执行下面脚本,就存在计算的问题,请大家帮忙看下:
#!/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

主要的问题就是红色字体那部分
文章评论

共有 3 条评论

  1. ljx198308 于 2010-10-29 09:57:22发表:

    好的,谢谢,后面我把
    glmis_rows=`expr $glmis_rows + $table_rows`
    改成
    let glmis_rows+=table_rows就可以了,楼上的也是一种方法,共享给其它有需要的朋友

  2. 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`

  3. 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给他值后没办法去相加减