我需要执行命令result=$(elastic-mapreduce --jobflow $JOBFLOW --list)
并返回结果。我需要检查结果是否存在字符串“PENDING”或“WAITING”或“RUNNING”,如果存在,我需要再次重试相同的命令,直到我看不到“PENDING”,“WAITING”或“跑步“
如何使用bash脚本实现这种功能。
答案 0 :(得分:0)
我会写:
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