免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4435 | 回复: 5
打印 上一主题 下一主题

shell while循环中的%老是报错,请指教啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-01 11:23 |只看该作者 |倒序浏览
本帖最后由 liklone 于 2011-09-01 12:24 编辑
  1. while read  msgid file;
  2. do
  3.         if [ -z "$msgid" ];then continue;fi
  4.         if [ -z "$file" ];then continue;fi

  5.         wget -q "$file"

  6.         curfile=`echo "$file"|awk -F"/" '{print $NF}'`

  7. if [[ -f $curfile ]];then
  8.         while read uid
  9.         do
  10.             echo $uid
  11.             if [ -z "$uid" ];then continue;fi
  12.             #idx=`echo "$uid % 10"|bc`
  13.             #idx=$(( $uid%10 ))
  14.             idx=`expr $uid % 10`
  15.             echo $idx

  16.         done < "./$curfile"

  17.         mv ./$curfile ./bak/$curfile
  18. fi
  19. done < $tmpfile
复制代码
当前shell为bash  linux环境。单个测试脚本中 都可以
报错分别如下:
expr: 非数值参数
%10 : syntax error: operand expected (error token is "%10 ")
(standard_in) 1: illegal character: ^M


单个脚本如

  1. while read uid
  2. do
  3.         idx=$(($uid%10))
  4.         echo "$uid ==> $idx"
  5. done
复制代码
已解决,是数据文件的问题。多谢关注!!!

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2011-09-01 11:27 |只看该作者
illegal character: ^M

论坛徽章:
0
3 [报告]
发表于 2011-09-01 11:27 |只看该作者
  1. `let $uid%10`
复制代码
??????????????

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2011-09-01 11:27 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2011-09-01 12:04 |只看该作者
illegal character: ^M
waker 发表于 2011-09-01 11:27



    把$(( $uid%10 ))空格去掉,并且dos2unix还是出错。
# file load_file.sh
load_file.sh: Bourne-Again shell script text executable

cat -A  看到的 也只有^I 这个应该是tab,其他的好像也没异常啊!!!

论坛徽章:
0
6 [报告]
发表于 2011-09-01 12:13 |只看该作者
illegal character: ^M
waker 发表于 2011-09-01 11:27



    大侠,多谢你的提醒。我错了

是数据文件,中含有那个^M  
把数据文件 dos2unix 就解决了
唉,太不细心了。。。。

感谢waker,感谢SHELL版,感谢CU
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP