32

次のようなテスト用のPowerShellV2スクリプトがあります。

    function test_args()
    {
      Write-Host "here's arg 0: $args[0]"
      Write-Host "here's arg 1: $args[1]"
    }


    test_args

powershellコマンドプロンプトからこれを呼び出すと、画面に次のように表示されます。

here's arg[0]: [0]

here's arg[1]: [1]

私が欲しかったものではありません。$args[0]と$args[1]を使用する前に、スクリプト内の新しい変数にコピーする必要があるようです。そうすれば、うまくアクセスできます。

コード内のインデックス付き$argsにアクセスする方法はありますか?いろいろな方法で中かっこを使ってみましたが、うまくいきませんでした。

最終的には名前付きパラメーターに移動しますが、作業中のスクリプト(このデモではありません)はバッチファイルのストレートポートです。

4

1 に答える 1

54

代わりにこれを試してください:

function test_args()
{
  Write-Host "here's arg 0: $($args[0])"
  Write-Host "here's arg 1: $($args[1])"
}

test_args foo bar

$argsであり、ではないことに注意してください$arg。また、文字列でPowerShell変数を使用する場合、PowerShellは変数の値のみを置き換えます。のような式を直接使用することはできません$args[0]。ただし、$()二重引用符で囲まれた文字列内の部分式グループ内に式を配置して、PowerShellに式を評価させ、結果を文字列に変換することができます。

于 2012-09-07T22:28:08.560 に答える