【PowerShell】配列の要素をカウントする時には戻り値の気を付けよう~配列の罠~

どうも!リョクちゃです。

配列については、これまで何回か取り上げることがありました。

その中でも配列に要素がいくつ含まれているか、については取り上げては来ませんでした。

今回は、配列に要素がいくつ含まれているか、また含まれている要素を取得する際に

気を付けておかないといけないことに触れていきます。

これまでの配列に関する記事は、こちら

あるデータをまとめて変数に格納しておきたい、することはできないか?また格納した変数から1つずつ取り出して、処理をしたいときがありませんか?そんなときに使える配列とforeachをPowerShellで紹介しています。参考になれば嬉しいです。

前回(https://dreamparadaisu.com/powershell_08/)では配列の作り方と作った配列から値を取り出す方法の紹介をしました。次なるステップとして配列への値の追加はどうすればいいのだろう?といった疑問を抱くかもしれません。今回はそれを解消すべく、配列への値追加を紹介していきます。

前回(https://dreamparadaisu.com/powershell_09/)配列への値の追加方法と固定長サイズ、可変長サイズの配列について触れました。今回は作成された配列から値を取り出す際に便利な方法と配列に同じ値があった場合、時に集計をするときに除去しなくてはならない時があるかと思います。それを解消する方法の2本立てで紹介しています。

ちなみに前回の記事はこちら

条件が複数ある時、ひたすらif文を書いてはいませんか?条件が多くなるにつれて書いていくと複雑に且つわかりづらくなってきますよね。そんな時に使えるSwitch文について簡単に例を出しながら紹介しています。参考になれば嬉しいです。



配列の要素を取得する

配列の要素を取得するには以下のプロパティを使って取得ができます。

$<配列変数>.Count

試しに、使ってみます。
例) 配列変数testの要素を取得します。

例の場合、配列変数testに含まれる要素の数は3つなので、

Countプロパティの戻り値は「3」になります。

気を付けておきたい配列の要素数取得

それでは、以下の配列変数にCountプロパティを使うとどうなるでしょう?

$test = @()

Countプロパティを使うと、結果は0が返されます。

言語によっては、nullが返ってくる場合もあるので注意が必要です。

バージョンによっては、PowerShellでもnullが返ってきたような……。

PowerShellの場合は、配列の要素が0個の場合は0として返ってくるので、

条件分岐文を使って、分岐をさせたい場合は気を付けましょう。

ちなみにCountプロパティは、文字列にも使えます。

例) 変数sampleにCountプロパティを使ってみます。

結果は1になります。※文字数をカウントしてくれるわけでないので注意が必要です

文字数をカウントしたい場合は、Lengthプロパティを使用します。

結果は「5」になります。

ちなみに$null(PowerShellにおけるNull値)にもCountプロパティは使えます。

結果0になります。※頭の片隅にでも留めておきましょう。

まとめ

配列内の要素数を取得する方法について紹介していきました。

配列内の要素数によって受け取る値が変わってくるので注意が必要です。

また文字列の場合、文字数を取得するならCountプロパティよりLengthプロパティ

使うといいでしょう。

最後までお読みいただき、ありがとうございます。

Windows PowerShell実践システム管理ガイド 第3版 マイクロソフト関連書

Windows PowerShell実践システム管理ガイド 第3版 マイクロソフト関連書

横田 秀之, 河野 憲義
3,971円(05/21 16:41時点)
発売日: 2017/10/20
Amazonの情報を掲載しています

スポンサーリンク