我有一个正在执行 shell 的 jenkins 作业,如果特定条件不符合预期状态,我希望它等待,但该作业执行 22 秒,正如我要求它等待 30 秒一样当前情况未达到所需状态,
#!/bin/bash
container_name=$(helm install "$USER"-0.1.0.tgz | grep -A2 "v1/Pod(related)" | awk 'NR>2' | awk '{ print $1 }')
container_status=$(kubectl get pod "$container_name" | grep "$container_name" | awk '{ print $3 }')
count=0
if [ "$container_status" != "Running" ]
then
sleep 10
count+=1
if [ $count -eq 3 ]
then
break
fi
else
echo "Container is Ready!!"
fi
答案1
看起来你想要这样做:
#!/bin/bash
while [ "$container_status" != "Running" ] ; do
...
done
因为目前您只会执行该代码一次(因此数数无论如何,永远不会达到三)。
如果您想检测某些内容何时“准备好”,您可能会做得比使用从命名管道读取的旧技巧更糟糕,并在准备好时使用单独的(子)进程写入管道。