而循环在ksh

时间:2014-04-09 16:42:48

标签: loops while-loop ksh

sh bothworkfile.txt >> cleanup_process.log

while [[ `ps -eaf | grep -c "cleanx"` -ge 2  ]]
do
sleep 10
echo "Please be patient, we are still cleaning stuffs ! "
done
    echo " Clean up is done."

嗨我正在使用ksh。 bothworkfile.txt包含几行来在后台运行该进程。

cat bothworkfile.txt
cleanx data01.xsd*.* &
cleanx data01.xsd*.* &

Cleanx是我本地shell中的一个实用程序。默认情况下,总是会在后台运行cleanx。所以,

ps -eaf | grep -c "cleanx"

总是给1,但是当脚本调用它时,数字会增加。

但现在问题是我似乎无法进入while循环。运行脚本后,它打印"清理已完成。"

请帮助我理解为什么它不循环进入。再次,它的ksh shell。

1 个答案:

答案 0 :(得分:1)

为了更容易调试并看到结果确实是您所期望的,请将ps -eaf | grep -c "cleanx"的结果分配给变量,然后测试变量。我怀疑它正在评估为空或小于2,这将导致测试返回false,从而跳过循环。因此,在测试之前将其打印出来,以便您确定。像这样:

cleanx_count=$(ps -eaf | grep -c "cleanx")

printf "Cleanx_count: %d/n" ${cleanx_count}

while [[ ${cleanx_count} -ge 2  ]]