LinuxShellスクリプト - サイクル構造
要約:このホワイトペーパーでは、ループ構造のシェルスクリプトを検討しました。
whileループ
基本的な構文
ループは、ループの最も簡単な一種である一方、条件がして終了ループを満たしていない場合、条件は声明の中で満たされている場合にループが、実行されます。
。1 しばらく条件 2を 行う 。3 コマンドを 。4 DONE
あなたは文が条件になり、対応するループコマンドの体を持っている必要があることに注意してください、それ以外の場合は、決して終わることのない、無限ループがダウン実行されたとなり、最終的にループを終了する唯一の方法「を、確立されていません」。
使用例
取得した累積値を印刷した後、0-100:
1#!/ binに/ bashの 2 I = 0 3 和 = 0 4 ながら((iは<= 100 )) 5 行う 6 ((和 + = I)) 7 ((iは++ )) 8が 行わ 9 エコー $ { 和を }
ループまで
基本的な構文
untiしばらく判定条件が満たされていない逆ループ、もし巡回、判定条件は、サイクルの終了時に、満たされれば:
1 まで、条件 2 を行う 。3 コマンドを 。4 DONE
使用例
取得した累積値を印刷した後、0-100:
1#!/ binに/ bashの 2 I = 100 3 和 = 0 4 まで((I <= 0 )) 5 行う 6 ((和 + = I)) 7 ((i-- )) 8 行わ 9 エコー $を{ 合計 }
forループ
基本的な構文
1 ため(;発現の分析;(初期発現修飾可変式)) 2 行う 3。 コマンド 4。 DONE
初期化式は一度だけループは式を変更するために裁判官に影響する変数式を修正すること、表現毎回の裁判官を決定するために実行される前に行われます。
使用例
1#!/ binに/ bashの 2 の合計 = 0 ; 3 用((i = 0 ; iは= < 100 ; iが++ )) 4 行う 5 ((和 + = i))を 6つの 行わ 7つの エコー $ { 和 }
-のためのループ
基本的な構文
1 のための変数名でのサポートのリスト 2 やる 3 コマンドを 4 DONE
値リスト
値リストの多くの形態がありますが、あなたはまたしても、ワイルドカードを使用して、コマンドにより生成された結果を使用することができ、また範囲を与えることができ、特定の値に直接与えることができます。
1)直接具体的な値を与えます
これらは、直接特定の値、複数の値を与える裏キーワードとの間の空間によって分離することができます。実施例1 2 3 4 5、 "ABC"、 "390"、 "トム" など。
2)所定の範囲
特定のフォーマットの範囲内である {} start..end 。例えば 、{ 1 ... 100 } 。
結果は、3)のコマンドを使用して
``値を取得するためにバッククォートまたは$(コマンド)を使用して、コマンドを、あなたはサポートされているコマンドのリストとして結果を得ることができます。例えば、 $(LS *。SH) 。
4)使用シェルのワイルドカード
シェルのワイルドカードはテキストの代わりに、多くの場合、ディレクトリやファイルを一致させるために使用されている正規表現の合理化とみなすことができます。たとえば、 *。SH 。
特殊変数の5)使用
シェルは、いくつかの特別な変数が値リストに使用することができます。例えば、$#、$ *、$ @、$?$$。
使用例
特定の値を使用します:
1#!/ binに/ bashの 2 の合計 = 0 ; 3 用の N に 1 2 3 4が 行う 5 ((和 + = N)) 6つの 行わ 7つの エコー $ { 和を }
範囲を使用します。
1#!/ binに/ bashの 2 のための C で、{} A..Z 3 行う 4 エコー$ Cの 5 完了を
シェルスクリプトの値は、省略することができたときに着信コールを使用 して値リストの セクション:
1#!/ binに/ bashの 2 のためのC 3 行う 4 エコー$ Cを 5 完了
選択し、ループ
基本的な構文
選択インサイクルが対話性を強化するために使用され、それは、番号メニューを示すことができるユーザが入力異なる数の各種メニューを選択し、異なる機能を実行することができます。
選択インシェルはユニークサイクル、非常に適した端末(端末)は、対話シナリオで、C言語、C ++、Java(登録商標)、Pythonは、C#および他のプログラミング言語ではありません。
1 SELECT変数名でのサポートのリスト 2は やる 3 コマンドを 4 DONE
使用例
シェルを書きます:
1つの#!/ binに/ bashの 2は エコー 「あなたの性別は何?」 3 を選択名前を中 「Memの」 「女性が」 4 か 5 エコー 「$名を選択し、」 6 行わ 7 エコー 「の終了シェルを」
シェル実行して終了:
1 [ルート@ localhostの〜]#件のshテスト。SH 2どのような" sのあなたの性別? 3 1 )Memの 4 2 )女性 5#?1 6は、 Memの選択 7#を?2 8は、 女性の選択 9#を?1 10は、 Memの選択 11#を? 12 エンドシェル 13 [ルート@ localhostの〜]#
説明:
使用する #? メニュー番号を入力するように促すために使用します。選択-にするサイクル組成の終わりでCtrl + D。
select文を実行して、リストの内容の値は、メニューシステムの形式で表示され、メニュー番号を入力し、それが選択された値を意味し、この値が変数に代入され、その後、サイクル本体のコマンド部分を実行します。
サイクルは、入力メニュー番号を選択するために、ユーザーが必要となり、その値をプロンプトPS3として使用されるたびに、PS3のデフォルトは #? 、プロンプトを変更することができますPS3の値を変更します。
番号は、ユーザー入力のメニューの範囲内にない場合、ユーザは、メニューが再び戻ります(何も入力、Enterキーを押すだけです)、null値を入力した場合、それは、変数にNULL値が得られます。
注、無限ループ(無限ループ)を選択し、null値を入力するか、または無効な値を入力し、それが唯一の文が遭遇した、またはサイクルを終了するにはCtrl + Dキーの組み合わせれる破る、サイクルの終わりではありません。