32

我有一个如下所示的测试 powershell V2 脚本:

    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 回答