终止数组变量



有没有更好的表达方式呢:

for($j =0; $j -lt 11; $j++){
    if($averagetime[$j] -ne "no data"){
        Write-host $type[$j] "(" $1st[$j] "):" $averagetime[$j]
    }
}

我的输出看起来像这样:Multiaxial_Milling ( 5 ): 3.46

我希望它像这样输出:Multiaxial_Milling (5): 3.46

我知道${variable}工作,但它不工作的数组。目前这对我来说只是一个表面上的问题,但我想将来这可能会成为一个问题。

您可以使用子表达式$(...):

将数组索引放入字符串中。
Write-host $type[$j] "($($1st[$j])):" $averagetime[$j]

PowerShell将计算$(...)内部的内容作为一个正常表达式,然后用该表达式返回的值替换$(...)。下面是一个示例:

PS > "$(1 + 1)"
2
PS > "a$(1 + 1)b"
a2b
PS >
但是请注意,子表达式只适用于双引号字符串字面值"..."。如果将它们放在单引号'...'中,它们将被视为正常文本。

在这种情况下,格式操作符也是一个很好的选择,特别是在输出格式变得特别复杂的情况下。

基本数组的简单示例。

$evens = 2,4,6,8
$odds = 1,3,5,7
for($j =0; $j -lt 4; $j++){
    Write-Host ("Index {0}: Even - {1} | Odd - {2}" -f $j,$evens[$j],$odds[$j])
}

将产生以下输出

Index 0: Even - 2 | Odd - 1
Index 1: Even - 4 | Odd - 3
Index 2: Even - 6 | Odd - 5
Index 3: Even - 8 | Odd - 7

注意:我们需要在这里使用括号,否则-f会被作为Write-Host的参数。如果您只是将其发送到标准输出,则可以省略Write-Host和括号。

最新更新