■ PowerShell学習 #3:スクリプトへの引数渡しと変数

#2:スクリプトを実行するには? からの続き。


※本文中の "$" は半角で読み替えること。

引数

スクリプトへ引数指定することで値を渡すことが出来る
例) ./sample1.ps1 test

スクリプト側では $args[n] で引数を取得できる
n は 0以降の数値で 0 であれば先頭の引数値(上記例では "test")が格納される

指定した引数の数より大きい添字で $args[n] を指定してもエラーとはならない
例) ./sample.ps1 test
 ↓
$args[1] としてもエラーにはならない

引数の宣言

引数を宣言することにより、シェルの補完機能や型指定、必須指定などが可能となる。
引数を宣言するには、スクリプト先頭で Param属性 を設定する。
Param($hikisu1, $hikisu2)
引数に型を指定する場合
Param([String]$hikisu1, [int]$hikisu2)
引数の既定値を指定する場合
Param($hikisu1="test", $hikisu2)
引数を必須パラメータとする場合
Param([Parameter(mandatory=$true)$hikisu1])
値の列挙
Param([ValidateSet("value1", "value")]$hikisu1, $hikisu2)

変数

変数を使うことができる。

変数名は $ で始まり $atai = "aaaa" のように指定する (文字列を格納するには "" で囲まないとエラーとなる)

変数値を表示するには、単に変数名だけを指定すれば良い
例) $atai

変数名は大文字・小文字は区別しない

New-Variable コマンドレッドを使用することもできる
例) New-Variable atai -value "test"
既に使用した変数名に対して New-Variable を実行するとエラーとなる

変数名にスペースを含むことができる
この場合、変数名を { } で囲む
例) ${this is a} = "pen"

変数の型を知るには "GetType()" を使用する
例) ${this is a}.GetType()

変数に型を指定することが可能。この場合は変数名先頭に [型] を指定する
例) [int]$suji = 123

変数のスコープ

スクリプトスコープ $script:変数名

プライベートスコープ $private:変数名
スクリプトスコープとプライベートスコープを使用しないと、変な動き(変ではないが)になる
$a = 3

  function funcA
  {
    write-host "2) $a"
    $a = 7
    write-host "3) $a"
    funcB
  }
  
  function funcB
  {
    write-host "4) $script:a"
  }
  
  write-host "1) $a"
  funcA
  write-host "5) $a"
上記の場合 4) の表示では 3 が表示されそうだが funcB は funcA の配下なので 7 が表示される
これを避けるには funcA で 7 を設定した変数aをプライベート変数 $private:a とするか、funcB が参照している変数aをスクリプト変数 $script:a とする

グローバルスコープ $global:変数名
スクリプトファイルを超えてスコープを持つ変数

#4:演算子 へ続く




PowerShell学習

0 件のコメント:

その他の記事