+ -
当前位置:首页 → 问答吧 → shell脚本输出问题

shell脚本输出问题

时间:2011-12-09

来源:互联网

各位大虾,跪求指导。
  我写了一个小脚本,如下:
  #!/bin/sh
  for line in `cat /log/trace_log_bak/201111/msisdn.txt`
  do
  echo $line
  echo "==================="
  grep $line /log/trace_log_bak/201111/20111125/* | grep 000000000000021374 >> /log/trace_log_bak/201111/test.txt
  done
   
  msisdn.txt是存放用户号码的文件,20111125是里面存放的是日志文件,我想得到的是把msisdn.txt里面的号码逐行读出,然后作为grep的查询项,然后把日志文件的相关信息读出来,写到test.txt文件里面去,但是遇到了一个奇怪的问题,就是只有一个号码可以查到相关信息写到文件里面去,其他的读不出来,我单独执行命令也是可以的,msisdn.txt里面的号码是可以读出来的,请问是我哪里写错了,还是有什么问题???

作者: hmz349853714   发布时间: 2011-12-09

测试了没有问题吧

Assembly code

[root@RHEL6A shcode]# cat /tmp/msisdn.txt 
2001
2002
2003

[root@RHEL6A shcode]# cat /tmp/log/*
2001 000000000000021373 
2001 000000000000021374
2001 000000000000021375


2001 000000000000021373 
2002 000000000000021374
2001 000000000000021375


[root@RHEL6A shcode]# cat sh12.sh 
#!/bin/sh
for line in `cat /tmp/msisdn.txt`
do
echo $line
echo "==================="
grep $line /tmp/log/* | grep 000000000000021374 >> /tmp/test.txt
done

[root@RHEL6A shcode]# echo > /tmp/test.txt
[root@RHEL6A shcode]# cat /tmp/test.txt 

[root@RHEL6A shcode]# ./sh12.sh 
2001
===================
2002
===================
2003
===================
[root@RHEL6A shcode]# cat /tmp/test.txt 

/tmp/log/log1.txt:2001 000000000000021374
/tmp/log/log2.txt:2002 000000000000021374
[root@RHEL6A shcode]# 

作者: askandstudy   发布时间: 2011-12-09

不行的话就用-x参数自己调试一下shell脚本,看看每一步是否如你预期的一样执行

作者: askandstudy   发布时间: 2011-12-09

grep -Ff /log/trace_log_bak/201111/msisdn.txt /log/trace_log_bak/201111/20111125/* |grep 000000000000021374 >> /log/trace_log_bak/201111/test.txt

作者: imeuyniy   发布时间: 2011-12-09