我需要执行命令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