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

プロのヒント:For、While、Untilループ

レベル:SYSADMIN /時間:1〜2分

これは、bashシェルスクリプトでfor、while、untilループを使用する必要がある場合に、簡単に戻るための便利なクイックリファレンスの例です。これは、ブックマークを付けて後日戻ってくるのに最適です。私が使用している他の言語(C、PHP、Pythonなど)と比較して、bashの構文の微妙な違いを常に忘れています。

例を示す前に、各タイプのループをいつ使用するかを知っておく価値があります。

  • for ループは他のプログラミング言語とは少し異なります。基本的に、文字列内の一連のアイテムを反復処理できます。
  • while loopは、制御式がtrueの場合に実行する項目を実行し、falseの場合(または実行されたコード内に明示的なブレークが見つかった場合)にのみ停止します。
  • まで ループはwhileループとほぼ同じですが、制御式がfalseと評価されている間にコードが実行される点が異なります。

例1:単純な繰り返し

この単純なタイプのループは、提供された値を単純にカウントします。この場合、1から始まり、5に進みます。これは最も基本的な繰り返しです。


#!/bin/bash
for i in 1 2 3 4 5
do
echo "Hello, I've done this loop $i times"
done

例2:アクションを50回繰り返します:

繰り返しは、値から開始してカウンターをインクリメントすることで実行できます。これは、従来のプログラミング言語で行うのと同じです。覚えておく必要があるのは、(((数値計算を表すために。

)を使用することだけです。


#!/bin/bash
for ((i=1;i<=50;i++));
do
# your command, eg: echo $i
done

この例は、本来の機能を実行します。ただし、少し難解なダブルブラケットを思い出させる必要のない簡単な方法があります。以下の例をご覧ください。

例3:数値範囲の操作

範囲

場合によっては、ステップ値を設定する必要があります(たとえば、2でカウントしたり、逆方向にカウントしたりします)。 バージョン3.0以降をbashすることに注意してください アップレンジの使用に対するサポートが組み込まれていますが、ステップレンジでは実際には実用的ではありません:

#!/bin/bash
for i in {1..5}
do
echo "This is the $i iteration of this loop"
done

ステッピング:

最新のLinuxディストリビューションのほとんどはBashv4.0+を実行しており、{START ..を使用してステップ値を設定するためのサポートが組み込まれています。 終了.. INCREMENT}構文:

#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "This is the $i iteration of this loop"
done

出力:

This is the 0 iteration of this loop
This is the 2 iteration of this loop
This is the 4 iteration of this loop
This is the 6 iteration of this loop
This is the 8 iteration of this loop
This is the 10 iteration of this loop

FOR例4:単語、引数、およびコマンドの出力の操作

以前は数値範囲に取り組んできましたが、問題はFORループが引数を評価することです 数字ではなく、数字は単なる。です。これは、各行ベースの反復で動作するように指示できることを意味します。たとえば、以下はlsコマンドを実行します。アイテムごとに、線がエコーされます。行のリストではなく、単語の文字列で機能することに注意してください。したがって、ls -lを使用すると、有用な出力が提供されません。また、スペースを含むファイル名がある場合は、それらを異なる単語として解釈することに注意してください(引数 forに提供されます 。

#!/bin/bash
for i in $( ls *txt ); do
echo item: $i
done

WHILEの例:

基本的に、ループ構造のより古典的なプログラミング言語をエミュレートします:

#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done

UNTILの例:


#!/bin/bash
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done


Linux
  1. curlとwgetのヒントとコツ

  2. Bash の For ループと While ループの例

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

  1. ループの維持 – Bash For、While、Until ループの例

  2. C の GDB ブレークポイントの例 – ブレークポイントの設定、表示、継続、および削除

  3. Bash while ループで and を使用する

  1. BashForループガイドと例

  2. Linuxスクリプト:Bashでのwhileループの3つのハウツー

  3. ネストされた for ループ