我需要执行命令result=$(elastic-mapreduce --jobflow $JOBFLOW --list)并返回结果。我需要检查结果是否存在字符串“PENDING”,“WAITING”或“RUNNING”,如果存在,则需要再次重试同一命令,直到看不到“PENDING”,“WAITING”或“跑步”

如何使用bash脚本实现这种功能。

最佳答案

我会写:

shopt -s extglob
while :; do
    result=$(elastic-mapreduce --jobflow $JOBFLOW --list)
    [[ $result == +(*RUNNING*|*PENDING*|*WAITING*) ]] || break
    # do you need a delay here?
    sleep 10
done
echo "result now has no RUNNING or PENDING or WAITING"
:命令是一个内置的shell,可评估其参数(如果有),并仅返回“true”状态。
在此处阅读有关模式匹配的信息:http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching

08-28 04:38