web-dev-qa-db-ja.com

スクリプトを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}ループを使用してこれを達成し、次にスリープコマンドを使用することができました。

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

しかし、スクリプトが(たとえば、1回目または2回目など)反復中の条件に一致し、次の反復を実行したくない場合は、スクリプトを中断します。

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

4
smc

breakbuiltin がこれに使用されます。

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
7
jesse_b