logo

Bash スクリプト – While ループ

while ループ 指定された条件が false と評価されるまでコード ブロックを反復するステートメントです。条件が false と評価されるまでに何回 true と評価されるかわからない場合、プログラム内でこのステートメントまたはループを使用できます。

目次



BASH スクリプトの while ループの構文

while [ condition ]; do  # statements  # commands done>

条件が true の場合、while ブロック内のコマンドが実行され、条件をチェックした後に再度反復されます。また、条件が false の場合、while ブロック内のステートメントはスキップされ、while ブロックの後のステートメントが実行されます。

Linux で while ステートメントを使用したループの例

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

vim while.sh>

#!/usr/bin/bash



a=7
while [ $a -gt 4 ];
する
エコー $a
((a-))
終わり
エコー ループ外

説明:

  • #!/usr/bin/bash> : この行はシバンと呼ばれ、スクリプトの実行に使用するインタープリタへのパスを示します。この場合、Bash シェルを使用することが指定されています。
  • a=7> : という名前の変数を初期化します。a>値は 7 です。
  • while [ $a -gt 4 ];> : の値が続く限り継続する while ループを開始します。a>4より大きいです。
  • do> : while ループ内で実行されるコード ブロックの先頭をマークします。
  • echo $a> : 変数の現在値を出力します。a>コンソールに。
  • ((a--))> : の値をデクリメントします。a>by 1. これは簡略的な書き方ですa=$((a - 1))>
  • done> : while ループのコード ブロックの終わりをマークします。
  • echo 'Out of the loop'> : while ループが完了した後、ループのアウトをコンソールに出力します。
Linux の While ループ

Linux の While ループ



要約すると、このスクリプトは変数 ` を初期化します。 a`> 値を 7 にすると、` が続く限り続く while ループに入ります。 a`> は 4 より大きいです。ループ内で、` の現在の値を出力します。 a`> そして反復ごとに 1 ずつ減分します。一度` a`> が 4 以下になると、ループは終了し、スクリプトはコンソールに「ループから抜けました」と出力します。

while ループでファイルを読み取る

BASH では while ループを使用してファイルを読み取ることができます。特定のパラメータを while ループ条件に解析することで、ファイルを 1 行ずつ、または文字や単語などの他のグループごとに反復処理できます。

Javaの部分文字列関数

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

vim while.sh>

#!/usr/bin/bash

ファイル=temp.txt
読み取り中 -r 行;
する
エコー $line
完了 <$file

説明:

  • #!/usr/bin/bash> : このシバン行は、スクリプトの解釈に Bash シェルを使用する必要があることを指定します。
  • file=temp.txt> : 文字列 temp.txt を変数に代入しますfile>、読み取られるファイルの名前を表します。
  • while read -r line;> : 指定されたファイルから各行を読み取る while ループを開始します。
  • do> : while ループ内で実行されるコード ブロックの先頭をマークします。
  • echo $line> : 変数の内容を出力します。line>は、ファイルからコンソールに読み取られている現在の行を表します。
  • done> : while ループのコード ブロックの終わりをマークします。
  • <'$file'> : while ループの入力を指定されたファイル (この場合は temp.txt) から取得するようにリダイレクトします。

要約すると、このスクリプトはファイル temp.txt から各行を読み取り、ファイルに行がなくなるまでそれをコンソールに出力します。の-r>オプション付きread>コマンドは、入力内のバックスラッシュがリテラル文字として扱われることを保証するために使用されます。

Linuxでwhile文を使用してファイルを読み取る

Linuxでwhile文を使用してファイルを読み取る

read コマンドを使用して、実際にファイルから行または文字を取得します。読み取りコマンドは、 が表示される場合に文字のエスケープを無視する -r 引数を使用して渡されるため、 として解析されます。 Done ステートメントの後に指定されたファイルから 1 行を読み取ります。 read コマンドは、指定されたファイルから 1 行を読み取り、ファイルの最後の行が読み取られる (読み取る行がなくなる) ときに while ループが終了します。

これは、BASH の while ループを使用してファイルの内容を読み取る方法です。

無限whileループ

while ループ ステートメントを使用して無限ループを作成するには。 while ループには条件を入れる必要がないため、ループは無限に反復されます。以下は、無限 while ループの例です。

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

vim while.sh>

#!/usr/bin/bash
その間 :
する
echo 無限ループ
# Ctrl + C を押してスクリプトを終了できます
終わり

説明:

  • #!/usr/bin/bash> : シバン行は、スクリプトの解釈に Bash シェルを使用する必要があることを指定します。
  • while :> : 無限ループを開始します。の:>(コロン) は常に true を返すシェル組み込みコマンドであり、事実上無限ループを作成します。
  • do> : 無限ループ内で実行されるコード ブロックの先頭をマークします。
  • echo 'An Infinite loop'> : ループの各反復で文字列 An Infinite LOOP をコンソールに出力します。
  • # We can press Ctrl + C to exit the script> : これは、ターミナルで Ctrl + C を押すとスクリプトを中断できることを示すコメントです。 Ctrl + C は、ターミナルで実行中のスクリプトを中断して終了する一般的な方法です。
  • done> : 無限ループのコード ブロックの終わりをマークします。

要約すると、このスクリプトは、「無限ループ」というメッセージをコンソールに継続的にエコーする無限ループを作成します。ターミナルで Ctrl + C を押すと、ループを中断してスクリプトを終了できます。

Linux で While ステートメントを使用した無限ループ

Linux で While ステートメントを使用した無限ループ

したがって、スクリプト内の while ループは無限に反復されることになります。 CTRL + C を使用して、ループまたはスクリプトを手動で中断できます。

固定回数繰り返す While ループ

while ループを使用して固定回数を反復することができ、条件を -le 以下に設定でき、反復子が指定された数以下になるまでループが反復されます。状態。また、ループ反復子の動作を維持するには、反復子を手動でインクリメントする必要があります。そうしないと、ループが永久に継続します。

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

vim while.sh>

#!/usr/bin/bash

i=1

# 4 という数字が限界値になる可能性があります

# ループを繰り返す

while [ $i -le 4 ];
する
エコー $i
((i++))
終わり

10億のうちゼロは何個

説明:

  • #!/usr/bin/bash> : シバン行は、スクリプトの解釈に Bash シェルを使用する必要があることを指定します。
  • i=1> : という名前の変数を初期化します。i>値は 1 です。
  • while [ $i -le 4 ];> : の値が続く限り継続する while ループを開始します。i>4 以下です。
  • do> : while ループ内で実行されるコード ブロックの先頭をマークします。
  • echo $i> : 変数の現在値を出力します。i>コンソールに。
  • ((i++))> : の値を増加させます。i>by 1. これは簡略的な書き方ですi=$((i + 1))>
  • done> : while ループのコード ブロックの終わりをマークします。
Linuxのwhileループ

Linuxのwhileループ

上の例では、ループが定義された回数だけ反復されることがわかります。カウンタを 1 に初期化しており、条件は反復子が数値 (この場合は 4) 以下になるまでループを繰り返すことです。したがって、要件に応じて条件の数値を変更できます。

getopts オプションを使用してコマンドライン引数を読み取る

get ops オプションを使用してコマンド ラインから入力を読み取ることができ、複数の引数がある場合は、while ループを使用してそれらを 1 つずつ確認し、解析できます。 getopts は、コマンド ラインからユーザー入力を取得するツールです。コマンド ラインから解析する複数のオプションを指定でき、getopts と while ループを使用すると、本格的なユーザー入力プログラムを作成できます。

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

vim while.sh>

#!/bin/bash

while getopts n:a: OPT
する
ケース ${OPT} で
n) 名前=${OPTARG} ;;
a) 年齢=${OPTARG} ;;
*) echo 無効なオプションです
出口 1 ;;
イーサック
終わり
printf 私の名前は $name で、年齢は $age です

説明:

  • #!/bin/bash> : シバン行は、スクリプトの解釈に Bash シェルを使用する必要があることを指定します。
  • while getopts n:a: OPT> : を使用するループを開始します。getopts>コマンドラインオプションを解析します。指定されたオプションは次のとおりですn>そしてa>、両方の後に引数が続くことが期待されます。
  • do> : ループ内で実行されるコード ブロックの先頭をマークします。
  • case '${OPT}' in> : で見つかったオプションの値を評価する case ステートメントを開始します。getopts>
  • n) name=${OPTARG};;> : オプションが-n>、対応する引数の値を変数に代入しますname>
  • a) age=${OPTARG};;> : オプションが-a>、対応する引数の値を変数に代入しますage>
  • *) echo 'Invalid option'> : 無効なオプションが見つかった場合、エラー メッセージがコンソールに出力されます。
  • exit 1;;> : エラーを示すゼロ以外のステータス コードでスクリプトを終了します。
  • esac> : case ステートメントを終了します。
  • done> : ループのコード ブロックの終わりをマークします。
  • printf 'My name is $name and am $age years old '> : ` の値を使用して、フォーマットされたメッセージをコンソールに出力します。 name`> そして「」 age`> コマンドラインオプションから取得します。
Linux の While ループ

Linux の While ループ

この場合、名前と年齢の 2 つのオプションがありますが、複数のオプションを指定することもできます。 switch case ステートメントと -shorthand オプションを使用してコマンド ラインからどのオプションを使用するかを指定する必要があります。この場合、私たちが使用したのは、 -n 名前の場合 そして -a 年齢 。また、間違った引数を解析しないように、デフォルトまたは無効なケース チェックも備えています。を使用してオプションの値を割り当てることができます。 オプターグ オプションに指定された値を解析する変数。

ここの while ループは、コマンド ラインから渡されるオプションがなくなるまで反復するために使用されます。 -n および -a オプションをチェックし、キャリッジ リターンまたは Enter キーが押されて、それ以上解析するオプションがなくなるまで繰り返します。

C スタイルの while ループ

BASH では C スタイルの while ループを使用できます。変数は BASH スタイルで評価する必要がありますが、全体的な構文は C のように感じられます。while ループの条件で ,<= などの演算子を使用できるため、は、C スタイルの while ループのように呼び出されます。

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

vim c-style-while.sh>

#!/bin/bash
i=0
while ((i <12))
する
エコー $i
((i+=2))
終わり

c-style-while

c-style-while

この例では、while ループに -le や -ge などの非 bash 演算子を含む条件があり、代わりに条件で C スタイルの演算子を使用していることがわかります。ループの残りの部分は BASH と同様の基本ループで、ループ本体の最後のステートメントでわかるように、変数または反復子 i は 2 ずつインクリメントされます。したがって、ループは 5 回以上繰り返されます。

ファイルに対する操作を実行する While ループ

ファイルの特定の部分のみを読み取るなど、ファイルに対して操作を実行できます。特定の方法でフォーマットされた列がある場合、変数を使用してそれらを割り当て、1 行のデータタイムで出力できます。

ファイル名の例は wh.txt です。

vim wh.txt>

Linux のテキスト エディタを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディタを使用します。

vim file-while.sh>

リリースされた言語タイプ

Python 一般 1991

後続のデータ型

JavaScript ウェブ 1995

Java モバイル 1995

Rust 埋め込み 2010

バックエンド 2007 に行く

Linux のテキスト エディタを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディタを使用します。

vim file-while.sh>

#!/bin/bash

a b cを読みながら
する
エコー $b – $a
終わり

Linux の While ループ

Linux の While ループ

この例には 3 つの行があり、変数 a、b、c に代入して内容を読み取ります。任意のものを使用できますが、ループ本体で使用することを忘れないでください。 b や a などの特定の列を選択し、それらに対して印刷または任意の操作を実行できます。ただし、これらは単なるローカル スクリプト変数であるため、これはファイルには反映されません。

while ループを使用してファイルに書き込む

while ループでのユーザー入力によってファイルに書き込むことができます。 CTRL + D を使用してファイルへの変更を保存するか、CTRL + C を使用してファイルへの書き込みを回避することで手動でループを終了するまで、while ループを使用して繰り返すことができます。 read コマンドを使用してコマンド ラインからテキストを入力し、それを解析してファイルに書き込みます。

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

vim write-wh.sh>

#! /bin/bash

ファイル=wh.txt
echo 内容をファイル $file に入力します
行を読みながら
する
エコー $line>> $file
終わり

Linuxのwhileループ

Linuxのwhileループ

したがって、上記の例から、while ループと read コマンドを使用してファイルにテキストを入力できました。ループを終了してファイルへの変更を保存するには、CTRL + D キーを使用します。ファイルに何も保存せずにループを終了するには、CTRL + C キーを使用します。したがって、read コマンドと while ループを使用して、コマンド ラインからテキスト ファイルにテキストを入力します。

while ループを使用して中断して続行する

Break と continue は、明示的な条件なしでループ ステートメントの流れを制御するため、ループ ステートメントを扱うプログラムでは不可欠です。

While ループ内の Break ステートメント

while ループの条件が false と評価されるのを待たずにループを終了するには、break ステートメントを使用します。このステートメントはループ ブロック内で使用できます。これを使用すると、ループ内のプログラム条件で無限ループを終了し、ループの制御を維持できます。

たとえば、1 から永久にカウントするスクリプトがあります。ただし、ループ本体内で条件付きの Break ステートメントを使用すると、プログラムでループを抜け出すことができます。

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

インターネットに関するデメリット
vim while.sh>

#!/usr/bin/bash

i=1
その間 :
する
エコー $i
if [ $i -eq 20 ];それから
echo これでループの終わりです
壊す
なれ
((i++))
終わり

Linux のループ中に Break ステートメント

Linux のループ中に Break ステートメント

スクリプトと実行から、条件ステートメントと Break ステートメントを使用して無限ループを中断または終了できたことがわかります。したがって、break ステートメントは、while ループ内からプログラム/スクリプトの制御フローを取得し、ループ条件が false と評価されることなくループから抜け出すために使用されます。

While ループ内の Continue ステートメント

continue ステートメントを使用すると、break ステートメントの逆の処理を行うことができます。ループ ブロックの先頭にジャンプし、再度繰り返します。これは、特定の条件で特定のコマンドをスキップするために使用できるため、ループのフローを変更できます。

たとえば、1 に初期化された変数があり、5 で割り切れる数値だけを表示したい場合、または条件に従って特定のパターンで表示したい場合は、 continue ステートメントを使用してそれを行うことができます。これにより、目的の方法でループを反復できるようになります。

まず、Linux のテキスト エディターを使用してテキスト ファイルを作成します。この場合は `vim` テキスト エディターを使用します。

vim while.sh>

#!/usr/bin/bash

i=1
while [ $i -lt 30 ];
する
((i++))
if [[ $(( $i % 5 )) -ne 0 ]];
それから
続く
なれ
エコー $i
終わり

LinuxのwhileループのContinueステートメント

LinuxのwhileループのContinueステートメント

continue ステートメントを見るとわかるように、ブロックの先頭にジャンプし、ブロック内の次のコマンドをスキップしてコマンドの実行を開始します。 while ループは、次の値のみを繰り返します。 変数 i 30 未満であるため、if 条件は 変数 i は 5 で割り切れます。そうでない場合は、Continue を使用して繰り返し、変数 i の値をインクリメントします。の 変数 i 5 で割り切れる場合にのみエコーされるため、if 条件は false と評価され、Continue ステートメントには遭遇せず、通常のループ フローが実行されます。これは、すべての数値のログを回避し、if ステートメントまたはその他の条件ステートメントのパターンまたは条件に従わない数値のみを出力するために行われます。

よくある質問

1. `とは何ですか while`> Bash スクリプトでループしますか?

while>ループは、指定された条件が true である限り、コードの特定のブロックを繰り返し実行できるようにする Bash スクリプトの制御フロー ステートメントです。ループは、反復的なタスクを自動化する方法を提供し、スクリプトとプログラミングの基本的な構成要素です。

2. ` の構文はどのようになりますか? while`> Bashでループルック?

の基本的な構文while>Bash のループは次のとおりです。

一方【状態】
する
# 条件が true のときに実行されるコード
終わり

` condition`> ループの各反復の前に実行されるテストです。条件が true の場合、ループ内のコードが実行されます。条件が false の場合、ループは終了し、スクリプトは ` の後の次のコマンドに進みます。 done`> 声明。

3. ` の役割は何ですか? (( ... ))`> Bash で構築する while> ループ?

` (( ... ))`> Bashのconstructは算術演算に使用されます。 ` のコンテキストでは while`> ループは、算術条件を評価するためによく使用されます。

例えば: ` ((i <10))> `>変数かどうかをチェックします ` i`> これにより、ループ条件で算術式を直接使用できるようになり、数値比較を処理する場合に特に便利になります。

4. `を使用して無限ループを作成する方法 while`> バッシュで?

Bash の無限ループは、常に true と評価される条件を指定することで作成できます。

例えば:

真実ながら
する
# 無限ループのコード
終わり

あるいは、次のように条件でゼロ以外の定数を使用することもできます。 ` while [ 1 ]`> 、同じ結果を達成します。無限ループは、手動で中断されるまで継続的に実行する必要がある状況で役立ちます。

結論

この記事では、指定された条件に基づいてコードのブロックを繰り返し実行するための多用途ツールであることが証明されている BASH スクリプト while ループについて説明しました。基本的な構文には角括弧内で条件を定義することが含まれており、柔軟な反復が可能です。この記事では、ファイルからの読み取り、無限ループの作成、固定反復、コマンドライン引数の解析、break ステートメントと continue ステートメントの利用など、while ループのさまざまなアプリケーションについて説明します。 C スタイルの構文から対話型のファイル記述に至るまで、各例は、スクリプト作成のさまざまなニーズに対応するループの適応性を示しています。この包括的な概要は、制御された繰り返しと効率的なコード実行のための堅牢なメカニズムを提供する、BASH スクリプトにおける while ループの重要性を強調しています。