我的 PowerShell 脚本如下所示:
$counter = 1
function next() {
Write-host "$counter"
$counter++
}
next
next
next
next
我做错了什么?我想看到计数器增加。
令我惊讶的是,输出结果如下所示:
1
1
1
1
答案1
尽管,正如其他答案所建议的,您可以将变量的范围更改为 $script:... 或 $global:...,
任何程序员都会经常说这是个坏主意。全局变量可能会带来意想不到的、很难排除的问题和结果。因此,我将告诉你如何正确解决这个问题。
正如您已经知道的那样,函数内的变量不会超出函数范围,但您可以将值传入和传出函数。您的代码将变为如下形式:
function next() {
param
(
$counter
)
Write-host "$counter"
$counter++
return ($counter)
}
$counter = 1
$counter = next -counter $counter
$counter = next -counter $counter
$counter = next -counter $counter
$counter = next -counter $counter
答案2
创建$Counter
参考变量:
[Ref]$Counter = 1
Function Next ()
{
Write-Host ($Counter.Value++)
}
答案3
您的$counter
变量仅限于函数。请尝试使用全局范围。
$global:counter = 1
function next() {
Write-host "$global:counter"
$global:counter++
}