ウェブサイト検索

例のスクリプトによるBash無限ループの作成


すべてのループには有限の寿命があり、ループによっては、条件が真または偽のどちらかであれば終わります。Bashの無限ループは、単に無限に繰り返される命令のシリーズです。終了条件がなく、決して満たされない条件、またはループの新しい反復を刺激する条件があります。Bashの無限ループは、for、while、そしてuntilループを使用して作成できます。無限ループの従来の構文に少し変更を加えることで、Bashの無限ループスクリプトを実装できます。ここでは、プログラムの外部から強制的に停止されるまで、コマンドを継続的に実行するループを作成する必要があります。

例#1:例のスクリプトによる無限Whileループ

無限に実行され、終了することがないループを無限ループと呼びます。whileループは、条件が「true」コマンドで指定された場合、無限ループになることがあります。「true」コマンドは何も処理を行わず、正常に終了コード「0」を返します。ここでは、無限whileループ操作を行うbashスクリプトを示します。whileループは、「true」コマンドを取りますが、これは読みやすさのために使用されます。whileループには、nullコマンドをそのまま残してもかまいません。これはtrueコマンドと同様に実行されます。さらに、「do」ステートメントを使用して、「echo」コマンドを実行しました。whileループは「done」キーワードで閉じられています。

while true

do

echo "Do some task; Press [CTRL+C] to stop!"

done

実行時に、ターミナルを開いてbashコマンド「./bash1.sh」を実行しました。bashファイルが実行されると、それは無限に実行され、ターミナルにechoコマンドを無限に出力します。ここではwhileループのために「true」コマンドを使用しましたが、「false」コマンドも指定することができます。

例#2:例のスクリプトによる無限forループ

無限ループのシンプルな構造は、例のスクリプトで示されています。whileループには無限ループの機能があるだけでなく、無限に実行されるforループもあります。無限forループは無限whileループと同じように動作します。ここでは、条件やパラメータなしで指定された「forループ」を最初に宣言した無限forループのスクリプトがあります。それはデフォルトでtrueコマンドに設定されているため、正常に実行されました。その後、「do」キーワードを使用してecho文を呼び出しました。また、echo文に対して「sleep」コマンドの指示も与え、その後whileループは「done」文で終了しました。

for (( ; ; ))

do

echo "Hello Bash Shell"

sleep 1

done

無限フォーループスクリプトは画像に表示されているターミナルでエコーステートメントを印刷し続けます。

例#3:例のスクリプトによる無限ループ

bashの無限ループを作成する別の方法は、untilループを使用することです。untilループは、必要な条件が偽になる限り、コマンドのブロックを繰り返します。untilループは、ループのステートメントの条件が常に偽であるときに無限になります。作成された無限untilループは、無限whileループやforループに対して提供したスクリプトと同じです。無限untilループは単に「until」キーワードを使用します。以下に、変数「statement」の宣言からスクリプトを開始し、「false」値を設定する無限untilループのbashスクリプトを提供します。次に、カウンター「0」で設定された「loop_no」変数を定義しました。

その後、“until”ステートメントを指定しました。このステートメントは“$statement”を式として受け取ります。次に、doとdoneの間でechoキーワードが使用されます。ここでのechoコマンドは、falseの結果が返されるまでのループサイクルの数を印刷します。各ループサイクルで、その数はインクリメントされます。私たちは無限のuntilループ内でsleepコマンドを使用して、スクリプトを定期的に実行しています。

#!/bin/bash

statement=false

loop_no=0

until $statement

do

echo "Loop no : $loop_no"

((loop_no++))

sleep 1

done

実行時の無限ループスクリプトは、ターミナルに無限にループサイクルを表示し続けます。

例 # 4: ブレーク文を使用した無限ループの例スクリプト

時には、終わりのないループから抜け出す必要があります。無限ループは、break文と共に存在することもあります。特定の条件が満たされれば、無限ループは終了すべきです。break文が使用されると、ループは終了し、制御は次のステートメントに移ります。ここでは、bashスクリプトの中でbreak文を使用しています。まず、真の値を取るwhileループ式でスクリプトを設定しました。次に、echo修飾子を使って印刷コマンドを与えました。その後、条件が満たされているかどうかを確認するif文があります。そして、ここでwhileループを中断する "break" 文があります。

#!/usr/bin/env bash

while true

do

echo "Hit [CTRL+C] to exit from the loop..."

sleep 2

if [ condition ]

then

break

fi

done

echo文が正常に実行されると、break文はwhileループを終了させます。出力画像は以下に示されています。

例 # 5: 条件による無限ループの例スクリプト

今、無限ループの実行を別の手法で克服するシナリオを考えました。ループに条件が与えられると、その指定された条件が満たされたところで終了します。以下に、まず変数「x」に値「10」を設定したwhileループのBashスクリプトを実装します。それから、式「while [ $x -gt 5 ] 」を指定してwhileループを定義しました。この式には変数「$x」が含まれており、「gt」演算子を用いて値「5」と変数「$x」の間で「5」より大きいという条件が設定されています。その後、値を印刷するために「$x」を呼び出すecho文を定義しました。「x–」文は、各イテレーションで「$x」の値を減少させます。

#!/usr/bin/bash

x=10

while [ $x -gt 5 ];

do

echo $x

((x--))

done

echo "Results out of the loop"

画像は、“x”の値が“6”に達したときのwhileループの終了を示しています。ここでは、次の反復値が“5”となるため、条件が偽となり、whileの条件を満たしません。さらに、コードブロックが実行されるのを防ぐために使用されるcontinue文も使用できます。

結論

ガイドは私たちが終了条件が与えられないために常に実行され続けるbash無限ループを作成するのを助けています。whileループ、forループ、untilループを使用して無限ループを作成したbashスクリプトの例を提供しました。無限ループのbash例を作成した後、これらの終わらないループを克服する方法を示しました。