GNU/Linux >> Linux の 問題 >  >> Linux

シェルスクリプトのwhileループ

今日は、シェルスクリプトのwhileループについて学習します。ループはプログラミング言語の重要な部分です。一連のステートメントを15回実行するコードを作成する場合、同じステートメントを何度も作成するのは非生産的です。

ループはプログラマーの時間を節約します。

プログラミング言語で最も一般的に使用されるループの1つは、whileループです。シェルスクリプトでwhileループを使用して、各反復後に特定の条件が満たされる限り、一連のステートメントを繰り返します。

シェルスクリプトのwhileループはどのように機能しますか?

シェルスクリプトのwhileループは、記述する必要のあるコードの量を減らすことで、コードを効率的にするのに役立ちます。

スクリプトで何かを何度も繰り返す必要がある場合に便利です。シェルスクリプトでのwhileループの動作を、その構文を通じて理解しましょう。

while [ condition ] 
do 
    statement 1
    statement 2
done

ここでは、3つのキーワード、つまり while があります 、実行 および完了

  • 最初のキーワード「while」は、シェルスクリプトを実行したときのループの開始を示します。
  • その後に丸括弧で囲まれた条件が続きます。
  • キーワード「do」は、ループで実行されるステートメントの前に使用されます。
  • 各whileループは、条件とそれに続く一連のコマンドで構成されます。
  • 次に、ループの終わりを示すdoneキーワードに遭遇します。

do and doneは、他のプログラミング言語での開き括弧と閉じ括弧と考えてください

まず、条件が評価されます。条件がTRUEの場合、 doに続くステートメント 実行されます。これは、条件がFALSEと評価される時点になるまで繰り返されます。

条件がfalseになると、ループは終了します。

覚えておくべき重要なことは、Cプログラミングのように、シェルスクリプトは大文字と小文字を区別するということです。したがって、コードでキーワードを使用するときは注意が必要です。

条件付きステートメントについて知りたい場合は、ここをクリックして、シェルスクリプトのif-elseについて読んでください。

シェルスクリプトでwhileループを使用する

理論を読み、構文を一瞥するだけでは、コードで実際に使用できるようになるまで、そしてそれを使用できない限り、メリットはありません。

したがって、概念とその実際のアプリケーションをよりよく理解するには、次の例を確認してください。

最初の5つの数字を出力するためのループ中

基本的なものから始めるのが常に最善です。ここでは、シェルスクリプトでwhileループを使用して、画面に最初の5つの自然数を出力します。

この単純なスクリプトは、変数'a'の値が('-lt')5より小さい間、ループします。条件は1から4までの数値に当てはまるため、コマンドは同じように実行されます。

>

5以上の数値の場合、条件はfalseです。したがって、ループは終了します。コードの記述方法は次のとおりです。

#!/bin/sh
a=1
while [ $a -lt 5 ]
do
    echo $a
    ((a++))
done

シェルスクリプトでwhileループを使用して階乗を見つける

より実用的な例の1つは、whileループの機能を使用してタスクを完了することです。数の階乗を見つけましょう。

次のコードは、whileループを使用してこのタスクを実行する方法を示しています。

#!/bin/sh
counter=5
factorial=1
while [ $counter -gt 0 ]
do 
      factorial=$(( $factorial * $counter ))
      ((counter--))
done 
echo $factorial

ご覧のとおり、whileループの階乗は120として正しく出力されます。

whileループを使用したシェルスクリプトでのファイルの読み取り

テキストファイルを扱う場合、whileループは重要なツールであることがわかります。これは、 while readを使用してループにファイル全体を読み取らせることができるためです。 コマンド。

このコマンドは、コマンドラインからファイルの内容を読み取るのに役立ちます。次のコードは、シェルスクリプトのwhileループのこの機能を使用して、ファイルの内容を一度に1行ずつ読み取り、ユーザーの画面に出力します。

#!/bin/bash
FILE=$1
while read line
do
    # use $line variable to process line
    echo $line
done < $FILE

ご覧のとおり、シェルスクリプトでは、$ 1を使用し、それをFILE変数に割り当てたため、ファイル名を引数として渡しました。これは、最初の引数がファイル名として受け入れられ、スクリプトがファイルの読み取りに進むことを意味します。

また、スクリプトの実行後にファイル名を引数として直接使用できるように、スクリプト内で入力リダイレクト演算子を使用します。

その部分をスキップすると、コマンドは次の行に表示されます。

bash file.sh < filename.txt

ご覧のとおり、スクリプト内またはスクリプトの実行中に入力をリダイレクトします。結果は同じです。

結論

シェルスクリプトのwhileループは、すべてのシェルプログラマーの武器の重要な武器です。条件に基づいて繰り返される一連のステートメントを実行する必要がある場合に使用するのに最適なツールです。

特定のステートメントの実行を自動化することで、記述する必要のあるコードが少なくなるだけでなく、デバッグなどのより重要なタスクで使用できる時間を解放できます。

このチュートリアルが、Whileループ関数の使用方法を理解するのに役立つことを願っています。ご不明な点、フィードバック、提案がございましたら、下のコメント欄でお気軽にお問い合わせください。


Linux
  1. シェルスクリプトの連想配列?

  2. シェルスクリプトの正しいロック?

  3. シェル論理演算子の優先順位&&、||?

  1. 人々へのPower(Shell)

  2. $の意味は?シェルスクリプトでは?

  3. ループに巻き込まれましたか? Awk While、Do While、For ループ、Break、Continue、Exit の例

  1. Bashシェルのカスタマイズ

  2. シェルスクリプトでSetuidを許可しますか?

  3. シェル スクリプト while ループ:[ パイプラインの周りに `]' がありません