Loops ksh,在达到循环最大值时执行操作

Loops ksh,在达到循环最大值时执行操作,loops,ksh,Loops,Ksh,我希望编写一个小型KornShell脚本,执行5个测试(在每个测试之前等待一段时间),然后,如果所有测试都失败,执行一个操作 我在考虑做一些类似的事情: for i in {1..5} do "doMyTest" #it fills a variables "status" (but can unfortunately fails) if [ "$status" ]; then #if status is filled then

我希望编写一个小型KornShell脚本,执行5个测试(在每个测试之前等待一段时间),然后,如果所有测试都失败,执行一个操作

我在考虑做一些类似的事情:

    for i in {1..5}
    do
       "doMyTest"             #it fills a variables "status" (but can unfortunately fails)
       if [ "$status" ]; then #if status is filled then we can leave the loop
          break
       fi
       sleep 3                #else wait some time before doing another try
    done

    if [ -z "$status" ]; then
       exit 1
    fi

... then the rest of my program
你知道我怎样才能做得更好吗? 听起来有点多余


非常感谢。

您只想在所有测试都失败时看到失败? 当一个测试成功时可以跳过其他测试时,可以使用

test1 || sleep 3 && \
   test2 || sleep 3 && \
   test3 || sleep 3 && \
   test4 || sleep 3 && \
   test5 || exit 1

当所有5次迭代都完成后,它是否会自动离开循环(而不点击
中断
逻辑)?否则,您需要用示例输出解释您的问题。可能有两个示例显示正在使用的
中断
,然后是另一个未使用
中断
的示例。祝你好运。可能“doMyTest”并不总是有效,并且没有填充变量状态。我想做5次,如果它第一次通过实例工作(状态为filled),那么它将完成中断并离开。下一个if将不会被填充,退出1将不会被调用,我的程序将继续。但是,如果值$status由于“doMyTest”失败而未填充,我想在离开之前尝试5次(不使用中断),然后它将进入下面的if,并应用退出1。它回答了你的问题吗?我可能遗漏了一些语法错误,但是你的代码对你的问题来说似乎是合理的。你有什么证据表明它没有按要求工作?您是否知道并使用shell的调试/跟踪功能以及
set-vx
?这将显示执行前的每个“语句”(在本例中,是
while
循环的整个主体),然后显示实际执行的内容(使用前导的
+
字符)。通过这种方式,您可以查看变量名,然后使用
+
行,您可以查看哪些值被变量替换。你应该能够用这个解决你的问题。祝你好运尽量不要在不同的SE站点上发布相同的问题。同样的问题也出现在电视上