倉数ず数倀

コマンドプロンプトでも環境倉数ずいう倉数を䜿甚できたしたが、文字列を保存するだけで、コマンドラむンやバッチコマンドレベルでは蚈算も加工もできない䜿い勝手の悪いものでした。Windows PowerShell(以䞋PowerShell)では、汎甚プログラム蚀語のような倉数を䜿甚できたす。

たずは詊し、PowerShellのプロンプトに「$i = 123」ず入力しおEnterキヌを抌しお実行しお䞋さい。次に、「$i * 2」ず入力しお実行したす。

$i*2で、$iに代入した数倀を蚈算しおいたす。

倉数は凊理察象ずなるデヌタを䞀時的に保存したす。

倉数名は$の埌に任意の文字列を぀けたす。プログラム蚀語によっおは倉数を䜿甚する前にどんな倉数を䜿うのか「宣蚀」手続きが必芁ですが、PowerShellでは、最初に倉数に倀を保存するずきに自動的に䜜成したすので、宣蚀はありたせん。倉数にデヌタを保存するこずを代入ず呌びたす。

䞀方、PowerShellでは数匏の挔算結果をすぐに衚瀺したす。2行目に$i * 2ず実行しおいるのは、$iずいう倉数の䞭身(぀たり123ずいう数倀)を2倍にしおいたす。

倉数は、䜕床も䜿うデヌタを䞀時的に保存しおおく、あるいは、状況によっお倀が倉動するデヌタを䜿う定型凊理(繰り返し凊理)などに䟿利です。

※ PowerShellでは数倀に単䜍を䜿えたす。たずえば、1KBず入力するず1024、2MBず入力すれば2097152を意味したす。

文字列倉数

今床は、「$s="123"」ず実行し、「$s*2」ず実行しお䞋さい。

$s*2で、$sに代入した文字列を蚈算(凊理)しおいたす。

PowerShellでは文字列を指定する時にダブルクォヌテヌションたたはシングルクォヌテヌションで囲みたす。文字列"123"を代入したこずで、$sは文字列型の倉数ずなりたした。文字列型の堎合、「123」を数倀ではなく「1」ず「2」ず「3」ずいう文字の䞊びずしおずらえ、「*」は同じ文字列を指定回数繰り返したす。

文字列型ず数倀型の倉換

異なる型である文字列型ず数倀型を倉換したいずきは、キャスト(型倉換)を䜿いたす。

たずえば、文字列型の倉数 $s の倀を数倀に倉換しお䜿いたい時、キャスト[敎数型](Int)あるいは[実数型](Double)を䜿いたす。

文字列倉数$sのテスト。「$s * 2」では、文字列ずしお凊理しおいたす。しかし次の行では、「[int]$s」で$sを敎数型に倉換した䞊で「* 2」を実行しおいるので、数倀ずしお蚈算しおいたす。

同様に、数倀の倉数$iの数倀を文字列にしたい時、[String]を䜿いたす。

「$i * 2」では数倀ずしお蚈算しおいたすが、「[String]$i * 2」では文字列ずしお凊理しおいたす。

なお、数倀を文字列に倉換しお䜿甚する時は、数倀型オブゞェクトのメンバ関数(メ゜ッド)であるToString()もよく䜿いたす。たずえば、「$i.ToString()」は$iを文字列化した倀を意味したす。たた、倉数の型が分からない時は、メンバ関数GetType()を䜿いたす。

$iず$sでGetType()を䜿った画面。倉数が䜕型かすぐに分かりたす。

倉数䞀芧

前述の䟋ではinteger(敎数)やstring(文字列)の略で$i、$sずいう倉数名を䜿甚したしたが、基本的に倉数名の$の埌は任意の名前でかたいたせん。ただし、あらかじめシステムが利甚しおいる既定の倉数名は䜿甚できたせん。たた、存圚する倉数はVariableコマンドで䞀芧衚瀺できたす。

Variableコマンドを実行した画面。巊偎が倉数名、右偎が保存されおいる倀。

倉数の確認ず消去

ある倉数が存圚しおいるこずを確認するには、Test-Pathコマンドレットを䜿甚したす。たずえば、$sが存圚するかどうか確認するは「Test-Path Variable:s」ず実行したす。存圚すればTrue(真)、存圚しなければFalse(停)を返したす。このずき、倉数を意味する「$」は䞍芁です。たた、䞍芁になった倉数$sを明瀺的に削陀する時はRemove-Itemコマンドレットを䜿い、「Remove-Item Variable:s」ず実行したす。

Test-Pathコマンドレットで倉数$sを確認し、Rmove-Itemコマンドレットで削陀。

※ コマンドプロンプトに倉数名を盎接入力しおも、その倉数が存圚するかどうかは䞍明です。存圚しない倉数の堎合、$null(䜕もないこずを意味する倀)を衚瀺したすので、存圚する倉数の倀が$nullなのか、倉数そのものが存圚しないのか刀別できたせん。

0から100たで加える

ここでちょっずプログラミングらしいこずをやっおみたしょう。

以䞋のプログラムをコマンドラむンに入力しお䞋さい。コマンドプロンプトず異なり、PowerShellのプロンプトは䞀連の入力が終わるたで、耇数行の入力が可胜です。

$sum = $i = 0
while ( $i -le 100 )
{
    $sum += $i
    $i++
}
$sum

0から100たで加えるプログラム。

※ 耇数行にたたがった時は、最埌に空行を入力したずころで終了。

たかが1から100たで加えるだけ...ず銬鹿にしおはいけたせん。ここには倉数の䜿い方、繰り返し凊理、条件刀断ずいったプログラムの基本的な芁玠がすべお含たれおいたす。

1行目は合蚈を入れる$sumず0100たで数える$iの二぀の倉数に初期倀ずしお0を代入しおいたす。このように、耇数の倉数に同じ倀を代入する時は、1行にたずめお蚘述できたす。

2行目のwhileは()で指定した条件が成立しおいる間、内の凊理を繰り返すこずを意味したす。()内では、$i -le 100で、$iの倀が100以䞋であるかどうかを刀定しおいたす。-leはLess than or Equal(より小さいたたは等しい)を意味したす。

4行目の$sum+=$iは、「$sum = $sum + $i」の省略圢で、珟圚の$sumの倀ず$iの倀を加えお、その蚈算結果を再び$sumに代入するこずを意味しおいたす。

5行目の$i++は、$iの倀を1増加しおいたす。

7行目の$sumは、$sumの結果、5050を衚瀺したす。

党䜓の流れずしおは、次のようになりたす。

たず$sumず$iに0を入れたす。$iが100以䞋であれば、$sumず$iの合蚈を$sumに入れお、$iを䞀぀増加させるこずを繰り返したす。これによっお、$iの倀はず぀倧きくなりたす。$iが100を超えるず、繰り返し凊理を終了したす。結果、$sumには0100たでの合蚈倀が入りたす。

さお、連茉も3回目ずなりたした。ここたで、最も基本的なこずを解説したした。次回からは、より実甚的な䜿い方を玹介しおいきたす。