コマンド出力で例外が発生する可能性がある条件を生成するにはどうすればよいですか?

コマンド出力で例外が発生する可能性がある条件を生成するにはどうすればよいですか?

aws cloudformation「DELETE_IN_PROGRESS」や「ROLLBACK_IN_PROGRESS」などのテキスト形式でスタックステータスを返すコマンドを受け取りました。

aws cloudformation --region "$AWS_DEFAULT_REGION" describe-stacks --stack-name "$STACK_NAME" --query 'Stacks[*].StackStatus' --output text

プロセスが進行中の場合にのみスタック状態を返します。そうしないと、次のエラーが発生します。

An error occurred (ValidationError) when calling the DescribeStacks operation: Stack with id `foobar` does not exist

だから私の考えは、これらの例外のエラーメッセージを隠してテキスト出力を計算することでしたので、私は次のようにしました。

AWS_DEFAULT_REGION='us-east-1'
STACK_NAME='blog-review-ci'

until test "$(aws cloudformation --region "$AWS_DEFAULT_REGION" describe-stacks --stack-name "$STACK_NAME" --query 'Stacks[*].StackStatus' --output text 2>/dev/null)" = 'DELETE_IN_PROGRESS'; do
  echo "DELETE_IN_PROGRESS for $STACK_NAME, wait...";
  sleep 3s;
done

残念ながら、この問題は引き続き発生します。

DELETE_IN_PROGRESS for foobar, wait...

現在、DELETE_IN_PROGRESSが発生していないため、通過理由がわからないため、これは間違っています。

エラーが発生したときに出力がstderr / stdoutであることを確認するために、AWSコマンドに関する詳細情報を見つけようとしていますが、その情報を見つける方法がわかりません。

また| grep 'DELETE_IN_PROGRESS'コマンドを実行してみましたが、うまくいきませんでした。

until aws cloudformation --region "$AWS_DEFAULT_REGION" describe-stacks --stack-name "$STACK_NAME" --query 'Stacks[*].StackStatus' --output text | grep 'DELETE_IN_PROGRESS'; do
  echo "DELETE_IN_PROGRESS for $STACK_NAME, wait...";
  sleep 3s;
done

その結果は次のとおりです。

An error occurred (ValidationError) when calling the DescribeStacks operation: Stack with id blog-review-ci does not exist
DELETE_IN_PROGRESS for foobar, wait...

ベストアンサー1

untilきっと必要なところに使っていたようですwhile

whileuntilBashの違い

おすすめ記事