python for循环n次_python - 解决bash中while(或for或if)循环n次就跳出

问 题

一个目录下有许多文件(且所有文件都是单行),找出其中含有字符串 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

解决方案

#!/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个文件, 无法做到任意

另外你代码的几个问题

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

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

wx.jpg

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值