由网络副手--寻路人于2016.01.19 16:19:00发布在编程语言 一次Shell问题处理value too great for base (error token is "02708551 阅读4513 评论0 喜欢0 写了个脚本处理分割完成的数据,脚本在处理过程中发现报了一个错误. 数据格式: 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进制数字再运算. 赞 0 分享 赏 您可以选择一种方式赞助本站 支付宝扫码赞助 BraveDu 署名: 网络副手~寻路人