Shell脚本中的循环中断-Bash

时间:2019-02-06 20:57:48

标签: bash shell sh

我有一个shell脚本,需要循环运行一个查询,直到count表之一中的hive等于0。

在resource.hsql文件中,我根据条件将数据从临时表移到资源表,并且每次运行count都会在临时表中减小。

临时表中的初始count为5。

下面是我正在运行的脚本,它每次都给我回显count=5,即使在临时表中计数为0后,循环也不会中断。

#!/bin/bash
count=$(hive -e "select count(*) from temp;");

while [ "$count" != 0 ]
do
    echo "Count>>>>>>> $count"
    hive -f resource.hsql
    if [ "$count" -eq  0 ]
    then break
    fi
done

请为此建议解决方法。 在此先感谢!

2 个答案:

答案 0 :(得分:1)

您需要反复评估该命令。您的代码只能运行一次。

while
    count="$(hive -e "select count(*) from temp;")"
    [ "$count" != 0 ]
do
    echo "Count>>>>>>> $count"
    hive -f resource.hsql
done

还要注意while条件已经如何控制循环,因此无需在相同条件下单独break

答案 1 :(得分:0)

简单地:

#!/bin/bash
count=$(hive -e "select count(*) from temp;");

while [ "$count" != 0 ]
do
    echo "Count>>>>>>> $count"
    hive -f resource.hsql
    count=$((count - 1))
done

建议:

  

您不需要这个

if [ "$count" -eq  0 ]
then break
fi
  

当计数为0时while循环中断