PowerShell中ForEach循环内Write-Host $_无输出原因咨询
问题原因与修复方案
你的代码无输出(仅打印空行)的核心原因是:ForEach ($e in $ll)这种枚举循环语句中,自动变量$_不会绑定当前循环的元素。
$_(也可写为$PSItem)主要用于管道场景,比如$ll | ForEach-Object { Write-Host $_ },这种管道里的ForEach-Object cmdlet会自动将当前遍历的元素赋值给$_。但你用的是PowerShell的foreach循环语句(关键字形式),这种场景下循环元素只会存储在你显式定义的变量$e中,$_不会被自动赋值——此时它的值要么是之前上下文残留的空值,要么未定义,所以Write-Host $_只会输出空行。
修复后的代码
$ll = @("a","b","c"); ForEach ($e in $ll) {Write-Host $e}
如果你想继续用$_,也可以改用管道式的ForEach-Object:
$ll = @("a","b","c"); $ll | ForEach-Object {Write-Host $_}
内容的提问来源于stack exchange,提问作者Dr_Snooz
相关产品推荐
相关产品推荐

