ウェブサイト検索

シェルスクリプトで until ループを使用する方法


bash では、forwhile、およびuntilが 3 つのループ構造です。各ループは構文的にも機能的にも異なりますが、その目的は、特定の式が評価されるときにコードのブロックを反復処理することです。

Until ループは、式が false と評価されるまでコード ブロックを実行するために使用されます。これは while ループのまったく逆です。 While ループは式が true の間コード ブロックを実行し、until ループはその逆を実行します。

until [ expression ]
do
	code block
	...
	...
done

構文を詳しく見てみましょう。

  • ループを開始するには、until キーワードの後に一重または二重中括弧内の式を使用する必要があります。
  • コード ブロックの実行を開始するまで、式は false として評価される必要があります。
  • 実際のコード ブロックは do と Done の間に配置されます。

この短い記事では、次の例を使用して、シェル スクリプトで until ループを使用する方法を学びます。

スクリプトで無限ループを作成する

式としてfalseステートメントを使用して無限ループを作成できます。無限ループをシミュレートしようとするときは、 スクリプトを定期的に渡すスリープを使用してみてください。

count=0
until false
do
	echo "Counter = $count"
	((count++))
	sleep 2
done

単一行ステートメントの作成

単一行のループ ステートメントを作成できます。以下のコードを見てください。これは最初の無限ループの例と同じですが、1 行で構成されています。ここでは、セミコロン (;) を使用して各ステートメントを終了する必要があります。

until false; do echo "Counter = $count"; ((count++)); sleep 2; done

Break および continue ステートメントを使用してフローを変更する

while ループ内で Break ステートメントと continue ステートメントを使用できます。 break ステートメントはループを終了し、次のステートメントに制御を渡します。一方、 continue ステートメントは現在の反復をスキップして、ループ内の次の反復を開始します。

同じ無限ループの例を使用しています。ここで、カウントが 5 に等しい場合、Continue ステートメントはループ本体の残りの部分をスキップして次の反復にジャンプします。同様に、カウントが 10 以上になるとループは中断されます。

count=0
until false
do
  ((count++))
  if [[ $count -eq 5 ]]
  then
    continue
  elif [[ $count -ge 10 ]]
  then
    break
  fi
  echo "Counter = $count"
done

この記事はここまでです。近いうちに別の興味深い記事を「それまで」お届けしますので、読み続けてサポートを続けてください。