如何在 Powershell 中的函数中增加值?

如何在 Powershell 中的函数中增加值?

我的 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++
}

也可以看看:https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopes?view=powershell-7.3

相关内容