[英]Bash while loop - break and exit (DIE script DIE!!!)
我要从此脚本执行的所有操作是ssh到主机,并检查该进程是否仍在运行,否则,我希望小脚本消失。 虽然不死。 它停止,然后在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
您设置rc=$?
在ssh
命令之前,最后一个命令是test
( [
)命令,它刚刚成功执行,因此,当您测试if [[ $rc -eq 0 ]]
,答案始终是“是,确实”。
最好直接测试ssh
的状态:
#!/bin/bash
iterate=0
while [ $iterate -le 20000 ]
do
if ssh -q -T coolhost "ps -ef | egrep '[i]cool-process' | grep wrapper"; then
sleep 2
((iterate++))
else
break # or exit 1
fi
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.