一段时间后停止 shell 脚本中的循环进程

Whi*_*Guy 3 linux bash shell bamboo

我有一个如下所示的脚本,该脚本通过在每个循环上重新定义 x 来检查我的 pod 是否处于运行状态。

x=$(/opt/oc get pods --selector app=${bamboo.shortPlanName} -o jsonpath='{range .items[]}{.status.phase}{"\n"}{end}')

until [ "$x" == "Running" ];
do
   sleep 5
   x=$(/opt/oc get pods --selector app=${bamboo.shortPlanName} -o jsonpath='{range .items[]}{.status.phase}{"\n"}{end}')
   echo $x
done
Run Code Online (Sandbox Code Playgroud)

但是,我想修改我当前的脚本以也支持超时,我的意思是循环 60 秒后,应该停止,或者循环 12 次后,应该停止。知道该怎么做吗?

che*_*ner 5

bashSECONDS提供了一个可以用作粗略定时器的特殊变量。

SECONDS=0
while (( SECONDS < 60)); do
    x=$(/opt/oc get pods --selector app=${bamboo.shortPlanName} -o jsonpath='{range .items[]}{.status.phase}{"\n"}{end}')
    if [[ $x == Running ]]; then
        break
    fi
    sleep 5
done
Run Code Online (Sandbox Code Playgroud)

的扩展给出的不是分配的值,而是分配后的SECONDS秒数与分配的值之间的差值。效果就像一个变量,其值每秒增加 1。