暂停循环,直到命令中的grep模式满足条件(bash脚本)

暂停循环,直到命令中的grep模式满足条件(bash脚本),bash,if-statement,for-loop,grep,Bash,If Statement,For Loop,Grep,我想将多个作业发送到远程计算机。因此,我编写了一个for循环,它迭代由几个子命令组成的I作业。我需要暂停后续迭代,直到某个子命令被执行,并且作业实际在远程计算机上运行。 因此,我们的想法是检查字符串“PEND”是否出现在远程计算机上的命令输出中。当“PEND”更改为“RUN”时,我希望for循环继续。我不知道if语句是否适合在这里使用。使用sleep的固定等待时间不起作用,因为状态从PEND更改为RUN是非常不规则的。 附加信息:子命令包含可执行文件的编译 错误伪码: for i in {1..

我想将多个作业发送到远程计算机。因此,我编写了一个for循环,它迭代由几个子命令组成的
I
作业。我需要暂停后续迭代,直到某个子命令被执行,并且作业实际在远程计算机上运行。 因此,我们的想法是检查字符串
“PEND”
是否出现在远程计算机上的命令输出中。当
“PEND”
更改为
“RUN”
时,我希望for循环继续。我不知道if语句是否适合在这里使用。使用
sleep
的固定等待时间不起作用,因为状态从PEND更改为RUN是非常不规则的。 附加信息:子命令包含可执行文件的编译

错误伪码:

for i in {1..10}
do
    subcommands
    ...
    if [[ jobs | grep "PEND" == TRUE ]]; then sleep 1
    fi
done

听起来您可能会从.GNU parallel中受益,或者您应该使用PID检查。不要依赖作业命令当您迭代循环中的任务时,您是否将这些发送到远程主机的进程作为后台处理?如果没有,为什么需要暂停?如果是这样,我们将需要更多的实质性内容来解决这个问题。不过乍一看,我会将
if
语句替换为
while
循环。
如果
只为循环运行1x个外部
;您需要一个
while
until
循环并持续检查一个条件。你的条件是各种各样的错误,但我认为这不是你实际使用的条件。