logo

ステートメントのループ |シェルスクリプト

シェル スクリプトでのループ ステートメント: bash プログラミングで使用できるループ ステートメントは合計 3 つあります。

目次



ループ ステートメントのフローを変更するには、次の 2 つのコマンドを使用します。

  1. 壊す
  2. 続く

それらの説明と構文は次のとおりです。

Linuxのシェルスクリプトの「while」ステートメント

ここでコマンドが評価され、その結果に基づいてループが実行されます。コマンドが false に設定された場合、ループは終了します。 それ。



#/bin/bash while  do       done>

シェルスクリプトでの「while」ループの実装。

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

vim looping.sh>

looping.sh を任意の名前に置き換えることができます。

次に、Linux の `chmod` コマンドを使用してスクリプトを実行可能にします。



chmod +x looping.sh>

#/bin/bash

a=0

# lt は演算子より小さい

#10未満になるまでループを繰り返す

while [ $a -lt 10 ]
する
# 値を出力します
エコー $a
# 値をインクリメントします
a=`expr $a + 1`
終わり

出力:

Linux の While ループ

Linux の While ループ

説明:

  • #/bin/bash> : Bash シェルを使用してスクリプトを解釈する必要があることを指定します。
  • a=0> : 変数を初期化しますa>値は 0 です。
  • while [ $a -lt 10 ]> : 値が続く限り継続する while ループを開始します。a>は10未満です。
  • do> : ループ本体の始まりをマークします。
  • echo $a> : 現在の値を出力します。a>コンソール。
  • a=> expr $a + 1 : の値を増加させます。a>1.によるexpr>コマンドは算術式に使用されます。
  • done> : ループの終了をマークします。

Linuxのシェルスクリプトの「for」ステートメント

for ループは項目のリストを操作します。リスト内のすべての項目に対して一連のコマンドを繰り返します。
ここで、var は変数の名前、word1 から wordN はスペースで区切られた文字列 (単語) です。 for ループが実行されるたびに、変数 var の値が単語リスト内の次の単語 (word1 から wordN) に設定されます。

構文:

#/bin/bash for in  do       done>

シェルスクリプトでの `break` ステートメントを使用した `for` ループの実装。

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

vim for.sh>

for.sh を任意の名前に置き換えることができます。

次に、Linux の `chmod` コマンドを使用してスクリプトを実行可能にします。

chmod +x for.sh>

#/bin/bash

#for ループの開始

1 2 3 4 5 6 7 8 9 10 の場合
する

# a が 5 に等しい場合、ループを終了します
if [ $a == 5 ]
それから
壊す
なれ

# 値を出力します
echo 反復 no $a
終わり

出力:

Linuxのforループのbreakステートメント

Linuxのforループのbreakステートメント

説明:

  • #/bin/bash>: Bash シェルを使用してスクリプトを解釈する必要があることを指定します。
  • for a in 1 2 3 4 5 6 7 8 9 10>: 値 1 ~ 10 を反復して各値を変数に割り当てる for ループを開始します。a>各反復で。
  • do>: ループ本体の始まりをマークします。
  • if [ $a == 5 ]>: 現在の値が正しいかどうかを確認しますa>は5に等しい。
    • then>: 条件が true の場合に実行される条件付きブロックの開始をマークします。
      • break>: 条件が true の場合、ループを終了します。
    • fi>: 条件ブロックの終了をマークします。
  • echo 'Iteration no $a'>: 現在の反復番号を示すメッセージを出力します。
  • done>: ループの終了をマークします。

スクリプトは、値 1 ~ 10 を反復する for ループを設定します。各反復中に、値がa>は 5 に等しい。そうである場合、ループは次のコマンドを使用して終了します。break>声明。それ以外の場合は、現在の反復番号を示すメッセージが出力されます。ループは、すべての反復が完了するか、break ステートメントに遭遇するまで継続します。

シェルスクリプトの「Continue」ステートメントを使用した「for」ループの実装。

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

vim for_continue.sh>

for_ continue.sh を任意の名前に置き換えることができます。

次に、Linux の `chmod` コマンドを使用してスクリプトを実行可能にします。

chmod +x for_continue.sh>

#/bin/bash

1 2 3 4 5 6 7 8 9 10 の場合
する

# a = 5 の場合、ループを継続し、
# 8行目には移動しないでください

if [ $a == 5 ]
それから
続く
なれ
echo 反復 no $a
終わり

出力:

Linux の for ループの continue ステートメント

Linux の for ループの continue ステートメント

説明:

  • #/bin/bash> : Bash シェルを使用してスクリプトを解釈する必要があることを指定します。
  • for a in 1 2 3 4 5 6 7 8 9 10> : 値 1 ~ 10 を反復して各値を変数に割り当てる for ループを開始します。a>各反復で。
  • do> : ループ本体の始まりをマークします。
  • if [ $a == 5 ]> : 現在の値が正しいかどうかを確認しますa>は5に等しい。
    • then> : 条件が true の場合に実行される条件付きブロックの開始をマークします。
      • continue> : 条件が true の場合、ループ本体の残りの部分をスキップし、次の反復に進みます。
    • fi> : 条件ブロックの終了をマークします。
  • echo 'Iteration no $a'> : 現在の反復番号を示すメッセージを出力します。次の場合、この行はスキップされます。a>は 5 に等しくなります。continue>声明。
  • done> : ループの終了をマークします。

スクリプトは、値 1 ~ 10 を反復する for ループを設定します。各反復中に、値がa>は 5 に等しい。そうである場合、ループはループ本体内の残りのステートメントを実行せずに次の反復に進みます。それ以外の場合は、現在の反復番号を示すメッセージが出力されます。ループはすべての反復が完了するまで継続します。

Linux のシェル スクリプトの「until」ステートメント

until ループは、条件/コマンドが false と評価される回数だけ実行されます。条件/コマンドが true になるとループは終了します。

構文:

#/bin/bash until  do       done>

シェルスクリプトでの「until」ループの実装

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

vim until.sh>

まで交換可能です。 sh に希望の名前を付けます。

次に、Linux の `chmod` コマンドを使用してスクリプトを実行可能にします。

二分木と二分探索木
chmod +x until.sh>

#/bin/bash

a=0

# -gt は演算子より大きいです
# a が 10 より大きくなるまでループを繰り返す

[ $a -gt 10 ] まで
する

# 値を出力します
エコー $a

# 値をインクリメントします
a=`expr $a + 1`
終わり

出力:

Linux の Unitl ループ

LinuxのUntilループ

説明:

  • #/bin/bash> : Bash シェルを使用してスクリプトを解釈する必要があることを指定します。
  • a=0> : 変数を初期化しますa>値は 0 です。
  • until [ $a -gt 10 ]> : 値が続く限り継続するループを開始します。a>は 10 以下です。
  • do> : ループ本体の始まりをマークします。
  • echo $a> : 現在の値を出力します。a>コンソール。
  • a=> expr $a + 1 : の値を増加させます。a>1.によるexpr>コマンドは算術式に使用されます。
  • done> : ループの終了をマークします。

注記: シェル スクリプトは大文字と小文字を区別する言語であるため、スクリプトを記述する際には適切な構文に従う必要があります。

ループステートメントの例

1. For ループを使用した色の反復処理

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

vim color.sh>

color.sh を任意の名前に置き換えることができます。

次に、Linux の `chmod` コマンドを使用してスクリプトを実行可能にします。

chmod +x color.sh>

#/bin/bash

COLORS=赤緑青

# for ループは、COLORS からすべての値を読み取るまで継続します。

$COLORS の COLOR の場合
する
エコーカラー: $COLOR
終わり

出力:

Linux の場合まで

Linux の場合まで

説明:

  • 色の初期化:
    • COLORS='red green blue'>: という名前の変数を初期化します。COLORS>スペースで区切られた色の値 (赤、緑、青) のリストを使用します。
  • ループ反復の場合:
    • for COLOR in $COLORS>: 内の各値を反復する for ループを開始します。COLORS>変数。
      • ループ本体:
        • echo 'COLOR: $COLOR'>: 各色にメッセージを印刷し、現在の色の値を表示します。
    • ループは、ファイル内に存在するすべての値を処理するまで継続します。COLORS>変数。

この例では、Bash の単純な for ループを示し、COLORS>変数。このループは、色ごとに、現在処理されている色を示すメッセージを出力します。このループは、すべての色の値がなくなるまで繰り返されます。

2. while true を使用した無限ループの作成 シェルスクリプト内

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

vim infinite.sh>

infinite.sh を任意の名前に置き換えることができます。

次に、Linux の `chmod` コマンドを使用してスクリプトを実行可能にします。

chmod +x infinite.sh>

#/bin/bash

真実ながら
する

# 実行するコマンド
# sleep 1 は 1 秒間スリープすることを示します
echo こんにちは、無限ループです。
睡眠1
終わり

出力:

Linuxの無限ループ

Linuxの無限ループ

説明:

無限ループ構造:

  • while true>: 条件として無限に継続する while ループを開始します。true>は常に真実です。
    • ループ本体:
      • echo 'Hi, I am infinity loop'>: スクリプトが無限ループに入っていることを示すメッセージを出力します。
      • sleep 1>: 次の反復の前にループの実行を 1 秒間一時停止します。
  • ループは無限に続き、その本体内のコマンドが繰り返し実行されます。

この例では、Bash で while true 構造を使用した無限ループの作成を示します。このループは、無限ループとしてのステータスを示すメッセージを継続的に出力し、sleep 1 コマンドを含むため、反復間に 1 秒の遅延が発生します。無限ループは、手動で中断されるまで継続的に実行する必要があるプロセスによく使用されます。

3. インタラクティブな名前確認ループ

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

vim name.sh>

name.sh を任意の名前に置き換えることができます。

次に、Linux の `chmod` コマンドを使用してスクリプトを実行可能にします。

chmod +x name.sh>

#/bin/bash

正しい=n
while [ $CORRECT == n ]
する

# y を入力すると、つまり名前が正しい場合、ループは終了します。
# -p は入力を求めるプロンプトを表します

read -p あなたの名前を入力してください: NAME
read -p ${NAME} は正しいですか?正しい
終わり

出力:

Linux の対話型スクリプト

Linux の対話型スクリプト

説明:

  • 初期化:
    • CORRECT=n>: という名前の変数を初期化します。CORRECT>値 n を使用します。この変数はループを制御するために使用されます。
  • インタラクティブなループ:
    • while [ '$CORRECT' == 'n' ]>: の値が続く限り継続する while ループを開始します。CORRECT>はnに等しい。
      • ループ本体:
        • read -p 'Enter your name:' NAME>: ユーザーに名前の入力を求め、入力内容をNAME>変数。
        • read -p 'Is ${NAME} correct? ' CORRECT>: 入力した名前が正しいかどうかをユーザーに確認し、CORRECT>それに応じて変化します。
    • このループは、ユーザーが y (正しい名前を示す) を入力するまで続きます。

この例では、ユーザーに名前の入力を求め、確認を求める対話型ループを示します。ユーザーが y を入力して入力した名前が正しいことを確認するまで、ループが続きます。ループは ` を利用します read> `>ユーザー入力用のコマンドであり、` を更新します。 CORRECT> `>ループ フローを制御する変数。

結論

この記事では、Bash スクリプトでのループ ステートメントについて説明しました。while>for>、 そしてuntil>ループします。の使い方を紹介しますbreak>そしてcontinue>ステートメントを使用してループの動作を変更します。実際の例では、カラー値の反復、無限ループの作成、ユーザー入力検証のための対話型ループの構築などのループの実装を示します。このガイドは、Bash スクリプトのループ構造を理解して利用するための、簡潔かつ有益なリソースを提供します。