Bash WHILE-Loopsを書く方法

コマンド、構文、および例

一連のコマンドは、スクリプトファイルに書き込んで実行することで実行できます。

スクリプトファイルは、通常は.SHファイル拡張子を持つテキストファイルで、コマンドライン( シェル )から実行できる一連の命令が含まれています。

whileループの例

以下は、whileループの例です。 実行されると、このスクリプトファイルは1〜9の数字を画面に表示します。 while文は、 forループよりも終了条件を指定する柔軟性があります

#!/ bin / bash count = 1 while [$ count -le 9] echo "$ count" sleep 1((count ++))done

たとえば、インクリメントステートメント "((count ++))"を省略すると、前のスクリプトを無限ループにすることができます。

#!/ bin / bash count = 1 while [$ count -le 9] echo "$ count" sleep 1 done

「スリープ1」ステートメントは、各繰り返しで1秒間実行を一時停止します。 Ctrl + C キーボードショートカットを使用してプロセスを終了します。

コロンを条件として無限ループを作成することもできます:

#!/ bin / bash count = 1 while:do echo "$ count" sleep 1((count ++))done

whileループで複数の条件を使用するには、二重角カッコ表記を使用する必要があります。

count = 1 done = 0 while [$ count -le 9] && [$ done == 0] do echo "$ count" sleep 1((count ++))[$ count == 5]; 次に$ done = 1 fi done

このスクリプトでは、変数 "done"は0に初期化され、カウントが5に達すると1に設定されます。ループ条件では、 "count"が9未満で "done"が等しいゼロにする。 したがって、カウントが5になるとループが終了します。

"&&"は論理的な "and"と "||" 論理「または」を意味する。

条件中の接尾辞 "and"と "or"の代わりの表記法は、 "-a"と "-o"で、大括弧で囲まれています。 上記の条件:

[[$ count -le 9] && [$ done == 0]]

...は次のように書き直すことができます:

[$ count -le 9] -a [$ done == 0]

テキストファイルの読み込みは通常、whileループで行われます。 次の例では、bashスクリプトは、 "inventory.txt:"というファイルの行ごとに内容を読み取ります

FILE = inventory.txt exec 6

最初の行は、入力ファイル名を "FILE"変数に割り当てます。 2行目は、ファイル記述子 "6"に "標準入力"を保存します(3から9までの任意の値)。 これは、スクリプトの最後に "標準入力"をファイル記述子 "0"に復元できるようにするためです(ステートメント "exec 0 3行目で入力ファイルがファイル記述子" 0 "に割り当てられています"read"ステートメントは各反復でファイルから行を読み取り、それを "line1"変数に代入します。

早期にwhileループを終了するには、次のようにbreak文を使用します。

count = 1 done = 0 while [$ count -le 9] echo "$ count" sleep 1((count ++))[$ count == 5]ならば終了します。

breakステートメントはループ実行中にプログラムの実行をスキップし、それに続くステートメントを実行します。 この場合、ステートメント "echo finished"と表示されます。

一方、continueステートメントは、現在の反復のwhileループステートメントの残りの部分だけをスキップし、次の反復に直接ジャンプします。

count = 1 done = 0 [$ count -le 9]がsleepしている間1((count ++))[$ count == 5] then continue fi echo "$ count" done echo終了しました

この場合、変数 "count"が5に達すると "continue"文が実行されます。これは、次の文(echo "$ count")がこの繰り返しで実行されないことを意味します( "count"の値が5の場合)。