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


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

式がfalseと評価されるまで、ループを使用してコードのブロックを実行します。これは、whileループの正反対です。 whileループは、式がtrueのときにコードブロックを実行し、untilループはその逆を実行します。

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

構文を分解してみましょう。

  • ループを開始するには、キーワードの後に1つまたは2つの中括弧内の式が続くまで使用する必要があります。
  • コードブロックの実行を開始するまで、式は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

フローを中断して変更し、ステートメントを続行します

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

この記事は以上です。すぐに別の興味深い記事を「まで」キャッチし、それから読み続けて私たちをサポートし続けます。