Powershell – Part 4 – Arrays and For Loops

X

Privacy & Cookies

This site uses cookies. By continuing, you agree to their use. Learn more, including how to control cookies.

Got It!

Advertisements

Arrays

For those that have never worked with arrays here’s a great way to understand them: If a variable is a piece of paper then the stack of papers is an array. It’s a list of variables or objects, and every programming/scripting language has ways to store these variables or objects linearly so you can access them later via a number of different methods.

So let’s look at how we can create an array of string objects in powershell:

$array = @("test1", "test2", "test3")$array

You can also add an element to the end of an array:

$array = @("test1", "test2", "test3")$array += "test4"$array

配列を足し合わせることもできます。

$array = @("test1", "test2", "test3")$array2 = @("test4", "test5")$array = $array + $array2$array

欲しい要素のインデックス番号が分かっていれば、配列の要素にアクセスすることが可能です。 配列のインデックスは0から始まる整数値です。これは次のコードで確認できます:

$array = @("test1", "test2", "test3")"First array value: " + $array"Second array value: " + $array"Third array value: " + $array

この時点でその要素を通常の変数のように使用することができます。 私たちの配列は文字列の配列なので、この配列の要素を呼び出すときに、これがその文字列値に設定された通常の変数であるかのように文字列関数を使用できます。 例:

$array = @("test1", "test2", "test3")$array.ToUpper()

for ループ

配列は for ループの助けによって直線的にアクセスすることも可能です。

  1. 初期化
  2. ループを継続する条件
  3. 繰り返しの発生 – これは一般的に、ループが最終的に終了するように、ループの条件を満たしていない状態に近づけるために使用します

これは、単純なループを見ることで最もよくわかります。

for ($i=1;$i -lt 6; $i++) {"This is line number " + $i}

上記の例では、$i の値が 6 より小さいことをテストするために -lt 比較演算子を使用しています。 他にも、-gt(以上)、-le(以下)、-ge(以上)、-eq(等しい)、-ne(等しくない)など、多くの比較演算子が利用可能です。 利用可能な比較演算子について学ぶには、次のコマンドを使用できます:

help about_comparison_operators

配列でのループについて

配列に要素がいくつあるかテストする方法さえあれば、配列の各要素を順に反復するループを適用できることは容易に理解できます。 これを行うには、Lengthという配列オブジェクトのメンバを使用します。 ここで注意すべき点は、index 変数を 0 で初期化することです。これは配列の最初の要素であるためですが、配列の最後の要素は配列の要素数より 1 つ少なくなるため、index が配列長より小さいことをテストしたいのです。 以下は実際の処理です:

$array = @("test1", "test2", "test3")for ($i=0; $i -lt $array.length; $i++) {$array}

さらに高速な for ループの方法は、特別な foreach ループを使用することです。 foreach ループは、より単純な構成でリストの各項目に変数を設定します:

$array = @("test1", "test2", "test3")foreach ($element in $array) {$element}

foreachループで最後に注意すべきことは、パイプラインを介してアクセスできることです。 パイプラインで使用される foreach は、実際には ForEach-Object のエイリアスです。 この方法でパイプラインを使用すると、foreachをより速く書くことができますが、大きなデータセットを扱うときにいくつかのオーバーヘッドが発生する可能性があります。 パイプラインで foreach を使用する場合、コード ブロックの要素を表す特別な変数 $_:

$array = ("test1", "test2", "test3")$array |foreach {$_}

パイプラインで foreach ループを使用する方法は、このシリーズの第 2 回でファイルの読み取り方法について調べたときに既に見ています。

Get-Content dictionary.txt | foreach {$_.toupper()}

リストと配列は、プログラミングとスクリプトで非常に重要です。 何らかの形で配列やリストを使用しないスクリプトはめったにありません。 Armed with this knowledge you can start looping away. We’ll be touching on regular expressions in the next tutorial. Until next time…

Advertisements

コメントする