写了个脚本处理分割完成的数据,脚本在处理过程中发现报了一个错误.
数据格式:
123213232132132130
123213232132132131
123213232132132130
0270855121610
line 3: 0270855121610: value too great for base (error token is "0270855121610").

后来查看源文件发现有 0270855121610 一条数据.

执行shell的代码如下:

fileNums=`ls x* | wc -l`
for i in `ls x*`
do
    echo "~~excue~~$i~~~";
    for c in `cat $i`
    do
        if [ $c -eq 0 ]
        then
          continue
        fi
        echo $c >> ../engfile/result_eng_$(( $c%200 ))
    done
    sleep 1
done

错误提示在执行过程中是 $(( $c%200 )) 报错了,为什么呢?
shell 在加减乘除,取余等等运算过程中默认是运算10进制数据. 你来了一个数字0270855121610第一位是0,人家不认呀,
所以以此类推在处理shell 运算过重中输入的结果最好强制转换下.

$(( $c%200 ))    =>  改为  $(( 10#$c%200 ))  #加上 10#,强制转换为10进制数字再运算.