4
我想不通,爲什麼下面的代碼失敗:
# test.ps1
"`$args: ($args)"
"`$args count: $($args.length)"
# this fails
0..$($args.length - 1) | %{ $args[$_] = ($args[$_] -replace '`n',"`n") }
# this works
$i = 0
foreach ($el in $args) { $args[$i] = $args[$i] -replace '`n',"`n"; $i++ }
"$args"
我打電話它像這樣:
rem from cmd.exe
powershell.exe -noprofile -file test.ps1 "a`nb" "c"
我終於明白了。作爲一個自動變量,'$ args'是和異常的,因爲每個新的作用域從父作用域傳遞自己的參數,默認爲'$ null'。這就是爲什麼嵌套作用域不會在作用域棧的更上方尋找'$ args'變量。替代你的建議解決方案,'$ script:args'也可以。乾杯,基斯。 – guillermooo 2010-03-03 20:21:11