Powershell for循环(来自C#)

Ric*_*bby 2 c# powershell loops

我将我的C#程序移到Powershell,而我一直试图转换我已经工作过的for循环。我不知道该如何措辞,但是我在for循环中需要多个计数器变量,而且我一直无法弄清楚该怎么做。我也无法在线找到任何参考,所以我不知道这是否是Powershell的限制。

所以,这就是我的意思,在C#中,我有:

  for (int k = 1, file = 1, perFile = 0; k <= splitGroups; k++, file++, perFile += dtotalPerFile){

        }
Run Code Online (Sandbox Code Playgroud)

当然变量名称/类型无关紧要,所以我的问题是如何将其重构到Powershell中?是否可以使用For循环?还是我需要花点时间来达到相同的结果。

bri*_*ist 5

PowerShell的for循环可以做到这一点,但是语法可能有点尴尬。

您需要在中为for循环的每个“部分”包装多个语句$(),因此看起来像这样:

for ( $($k = 1 ; $file = 1 ; $perFile = 0) ; $k -le $splitGroups; $( $k++ ; $file++ ; $perFile += $dtotalPerFile) ) {
    # stuff
}
Run Code Online (Sandbox Code Playgroud)

for 循环的确允许换行而不是分号,并且子表达式也允许换行,因此您可以对其进行一些清理:

for ( 
    $(
        $k = 1 
        $file = 1
        $perFile = 0
    )
    $k -lt $splitGroups
    $(
        $k++ 
        $file++ 
        $perFile += $dtotalPerFile
    ) 
) {
    # stuff
}
Run Code Online (Sandbox Code Playgroud)

虽然还是一团糟。

有效的概念证明(因为我们没有您的变量):

for (
    $(
        $a = 0
        $b = 10
    )
    $a -lt 10
    $(
        $a++
        $b += 10
    )
) {
    "$a~$b"
}
Run Code Online (Sandbox Code Playgroud)