PowerShellで関数の引数が2つ以上になると、引数がうまく渡されない現象にしばらくハマっていました。(初心者ですね)
PowerShellは他の言語と比べると、関数への仮引数の記述が違います。
正しく動作する記述について備忘録として残します。
正しく動作しない引数2つ以上のコード(悪い例)
まずは悪い例です。
ソースコード
Javaやそれに類似する言語をかじっている人は、PowerShellでもこんな関数の呼び出しをやりがちです。
function doFunction($a,$b){
$result = $a * $b
Write-Host $result
}
# 引数 2つ ※誤り
doFunction (2,3)
Read-Host
実行結果
これだと思った通りに動きません。
実行結果すると、2 * 3の計算結果の”6″が表示されるかと思いきや、何も表示されません。
構文的には誤りではないので、やっかいなことにエラーも出てこないです。
正しい動作する記述例
PowerShellでは、仮引数に丸括弧を付けません。 ※丸括弧とは()
他の言語をやっていると違和感があるのですが、もともとコマンドだと考えると当たり前だとも言えます。
コマンドラインで引数を渡すときは括弧を付けませんね。
では以下に正しく動作する記述例を載せてみました。
ソースコード
正しくは以下のように値をスペースで区切って、関数に渡します。
function doFunction($a,$b){
$result = $a * $b
Write-Host $result
}
# 引数 2つ
doFunction 2 3
Read-Host
実行結果
想定通り、問題なく動作しました。
このように 2 * 3の計算結果の6が表示されます。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | PowerShell | 5.1 |
以上です。