python - 解决bash中while(或for或if)循环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
这篇关于python - 解决bash中while(或for或if)循环n次就跳出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文