免费注册 查看新帖 |

Chinaunix

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

新手总是问题多多--while read 不能循环 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-16 18:33 |只看该作者 |倒序浏览
10可用积分
早上用的好好的,下午就不能正常工作了,太奇怪了,现在执行后循环后只会处理第一行 realbill_ora_st_001_20081121_00032.log.Z,然后就跳出来了-_-,这是为什么

  1. # cat bill.list
  2. realbill_ora_st_001_20081121_00032.log.Z
  3. realbill_ora_st_001_20081121_00033.log.Z
  4. realbill_ora_st_001_20081121_00034.log.Z
  5. realbill_ora_st_001_20081121_00035.log.Z
复制代码



  1. cat bill.list|while read line
  2.                 do
  3.                 case $line in
  4.                         *_000_*)
  5.                         ;;
  6.                         *_001_*)       
  7.                         deal_time=$(date +%Y%m%d%H%M%S)
  8.                         file_result=$line'_'$deal_time
  9.                         zcat $line >> deal_bill001_log.txt
  10.                         awk -f test.awk deal_bill001_log.txt > $file_result
  11.                         tail_count1=`tail -1 $list_line`
  12.                         tail_count2=`tail -2 $list_line|head -1`
  13.                         if [[ $tail_count1 != *substring1* ]];then
  14.                                 if [[ $tail_count2 != *substring1* ]];then
  15.                                         zcat $line|tail -6 > deal_bill001_log.txt
  16.                                 elif [[ $tail_count1 == *substring2* ]];then
  17.                                         zcat $line|tail -1  > deal_bill001_log.txt
  18.                                 fi
  19.                         fi               
  20.                         ;;
  21.                         *_002_*)
  22.                         ;;
  23.                         *)
  24.                         ;;
  25.                 esac
  26.                
  27.                 done        
复制代码

最佳答案

查看完整内容

看看循环前是否正确设置了list_line

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
2 [报告]
发表于 2008-12-16 18:33 |只看该作者
原帖由 sthcf 于 2008-12-16 19:04 发表


大侠,快帮我看下是什么问题,只要我有分以后开帖问问题都会给的,只是我分少没办法给多

看看循环前是否正确设置了list_line

论坛徽章:
0
3 [报告]
发表于 2008-12-16 18:40 |只看该作者
但是在这个循环之前的另一个while循环是可以正常工作,这是为什么?

  1. while read line
  2.         do
  3.         if [[ $line == *"log.Z" ]] && ([[ $line == *"_000_"* ]] || [[ $line == *"_001_"* ]] || [[  $line == *"_002_"* ]] || [[ $line == *"_003_"* ]]);then
  4.         echo $line >> bill.list
  5.         fi
  6.         done < bill_tmp.list
复制代码

论坛徽章:
0
4 [报告]
发表于 2008-12-16 18:55 |只看该作者
分分分
给点分吧

论坛徽章:
0
5 [报告]
发表于 2008-12-16 19:04 |只看该作者
原帖由 nuclearxin 于 2008-12-16 18:55 发表
分分分
给点分吧


大侠,快帮我看下是什么问题,只要我有分以后开帖问问题都会给的,只是我分少没办法给多

论坛徽章:
0
6 [报告]
发表于 2008-12-16 19:17 |只看该作者
换成while read line
do
……
done < file试试,管道有时是会有问题的。

论坛徽章:
0
7 [报告]
发表于 2008-12-16 19:21 |只看该作者
原帖由 ynchnluiti 于 2008-12-16 19:08 发表

看看循环前是否正确设置了list_line

  1.                         tail_count1=`tail -1 $line`
  2.                         tail_count2=`tail -2 $line|head -1`
复制代码


好晕,怎么我瞄了那么久也没有发现这里写错了
问题解决了,感谢!

论坛徽章:
0
8 [报告]
发表于 2008-12-16 19:23 |只看该作者
感谢三位大侠,分是要怎么给的??是不是选了最佳答案就给过去了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP