python - 解决bash中while(或for或if)循环n次就跳出
伊谢尔伦
伊谢尔伦 2017-04-18 09:38:59
0
1
481

一个目录下有许多文件(且所有文件都是单行),找出其中含有字符串 NAME="configId"且只含有1个的、以.xml结尾的文件。匹配过后符合要求的文件中,取出任意5个拷贝到/tmp/five目录即可。

我的思路是先grep,然后用while判断等于1的,就拷贝到/tmp/five;循环执行5次,当大于5次就break。
执行了该脚本,发现有问题,/tmp/five中只取到了一个文件。

 for i in *.xml
 do
 num=`grep -o 'NAME="configId"'  $i|wc -l`

 done=0
 while [ "$num" -eq 1 ];do
   cp $i /tmp/five/
     done=$(($done+1))
     if [ "$done" -gt 5 ];then
       break
     fi 
 done
 
 done
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
PHPzhong
#!/bin/bash
num=0
for i in $(ls *.xml)
  do
    if [ $num -ge 5 ]; then
      break
    fi
    count=$(grep -o 'NAME="configId"' ${i} | wc -l)
    if [ ${count} -eq 1 ]; then
      cp ${i} /tmp/five
      num=$(($num+1))
    fi
  done

只能取出满足条件的5个文件, 无法做到任意

另外你代码的几个问题

  1. 不应该取变量名为保留字(done)done)

  2. 你的while循环实际上轮了6次, 从done=0~5

你的while循环实际上轮了6次, 从done=0~5#🎜🎜##🎜🎜# #🎜🎜#
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!