Bash while循环 - 中断和退出(DIE脚本DIE !!!)

时间:2015-01-06 00:15:13

标签: bash while-loop exit break

我想从这个脚本中获取的是ssh到主机,并检查进程是否处于活动状态,如果不存在,我希望littel脚本死掉。 虽然不死。它停止,然后再次启动ssh再次成功。 我想要死亡。

#!/bin/bash
iterate=0
while [ $iterate -le 20000 ]
do
   rc=$?
   ssh -q -T coolhost "ps -ef | egrep '[i]cool-process' | grep wrapper  "
   if [[  $rc -eq 0 ]] ; then
       sleep 2
       iterate=$((iterate+1 ))
   else
       break
       exit 1
   fi
done

它将迭代到2000,但是如果远程进程中断,它将不会死亡。它不会破裂并退出。

这会起作用 - 但是不会睡觉 - 如果我睡觉,rc会变为0并且永远不会死亡。 所以这有效,但太基础了。

#!/bin/bash
set -e
while : ; do
   ssh -q -T coolhost "ps -ef | egrep '[i]cool-process' | grep wrapper" > /dev/null 2>&1
done

1 个答案:

答案 0 :(得分:2)

您在rc=$?命令之前设置ssh,最后一个命令是test[)命令,该命令刚刚成功,因此当您测试{{1答案永远是肯定的,是的,它的确是'。

最好直接测试if [[ $rc -eq 0 ]]的状态:

ssh