【发布时间】:2012-09-07 22:26:18
【问题描述】:
我有一个如下所示的测试 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?我尝试以各种方式在它们周围使用花括号,但没有运气。
我最终将转向命名参数,但我正在处理的脚本(不是这个演示脚本)是批处理文件的直接端口。
【问题讨论】:
-
最终,这是字符串扩展(插值)语法问题,正如接受的答案中所解释的那样。简而言之:要嵌入诸如
$args[0]之类的表达式 - 而不是诸如$var之类的单纯变量引用——您需要$(...),即子表达式运算符;尔格:"... $($args[0]) ..."。有关 PowerShell 字符串扩展规则的简明摘要,请参阅 this answer。
标签: powershell args