bashには do...while が(たぶん)ないが、while文の条件式に全てを詰め込めば似たようなことができる。
条件式が true を返せばいいので最後に判定を入れとけばいい。
この例では、AWS CloudMapのサービスインスタンスが5つ登録されるまで待機している。
((n < 5))
が true の間 sleep 1
で待機する。
n=0
while
values=$(
aws servicediscovery list-instances \
--service-id srv-xxx \
--query 'Instances[].Attributes|sort_by(@,&order)|[].value'
)
n=$(echo "$values" | jq length)
(( n < 5 ))
do
echo "wait..."
sleep 1
done