是否可以使用行数来打破bash中的while循环?
我有以下代码,但它没有中断和无限运行:
wc -l Database.faa > counter
perl -p -e 's/ /\t/g' counter | cut -f6 > temp; mv temp counter
while
($counter > '0')
do
# some commands
wc -l Database.faa > counter
perl -p -e 's/ /\t/g' counter | cut -f6 > temp; mv temp counter
done
我的程序在每次运行时都会减少Database.faa,但是当Database.faa为空时它会继续运行。有人可以帮忙吗?
感谢。
答案 0 :(得分:2)
在您的条件$counter
中,不会查看文件counter
,这似乎是您在条件中尝试使用的内容。此外,(
并不是测试值的传统方法,但您可以使用您正在创建的子shell的退出代码。您可能对[
更感兴趣,这与test
命令相同。最后,对于这一部分,当使用test
>
不是比较运算符时,它是一个重定向运算符。 man test
显示您可以进行的比较,对于int比较,您可以使用-gt
代替。所以把它放在一起就可以像
counter=$(wc -l Database.faa | cut -f1 -d" ")
while [ $counter -gt 0 ]; do
# some commands
counter=$(wc -l Database.faa | cut -f1 -d" ")
done
或者,你可以测试文件是否为空,如
while [ -s Database.faa ]; do
# some commands
done