スクリプトを10回実行するか、条件が満たされるまで実行します。

スクリプトを10回実行するか、条件が満たされるまで実行します。

次のシェルスクリプトがあります。

 OUTPUT=$(systemctl is-active etcd)
 if [[ $OUTPUT == active ]]; then
       echo "The result is successfull"
   else
       echo "The result is unsuccessfull"
 fi

このスクリプトを10回実行し、毎回10秒間スリープモードに切り替えたいです。for i in {1..10}ループとsleepコマンドを使用してこれを達成できました。

for i in {1..10}; do
   sleep 10
   OUTPUT=$(systemctl is-active etcd)
   if [[ $OUTPUT == active ]]; then
       echo "The result is successfull"
   else
       echo "The result is unsuccessfull"
   fi
done

ただし、スクリプトが(最初または2番目など)反復中に条件と一致する場合は、スクリプトを中断して次の反復を実行したくありません。

whileループを実装する必要があるようですが、そこに条件とforループを追加する方法がわかりません。

答え1

これbreak 組み込みこの目的に使用されます。

for i in {1..10}; do
   sleep 10
   OUTPUT=$(systemctl is-active etcd)
   if [[ $OUTPUT == active ]]; then
       echo "The result is successful"
       break
   else
       echo "The result is unsuccessful"
   fi
done

関連情報