我有一个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
请为此建议解决方法。 在此先感谢!
答案 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循环中断