将 Shell 脚本转换为 PowerShell 脚本



所以我有这个 Shell 脚本,我正在尝试转换为 PowerShell 脚本

"任务"是逐行读取文本文件,并返回与参数中给出的名称相连的 4 个数字的平均值

文本文件:

.... ... . . . .
John Big 1 2 4 5
.... ... . . . .

例:

if arg is "John Big" it should give back 3

外壳脚本:

while read -r fname lname a b c d;
do
x="$fname $lname"
if [ "$x" = "$1" ]
then
avg=$(( (a + b + c + d) / 4 ))
echo $avg
break
fi
done <class.txt

PowerShell:

$TextFile = Get-Content .class.txt
foreach($line in $TextFile){
$fname,$lname,[int]$a,[int]$b,[int]$c,[int]$d =$line.split(' ')
$x = "$fname $lname"
$avg = (($a + $b + $c + $d) / 4)
if($x = $args[0]){
echo $avg
break
}
}

请帮我编辑这个PowerShell脚本

您在 if 条件中使用了赋值,而不是比较。因此,当您将该=替换为-eq时,一切正常:

$TextFile = Get-Content .class.txt
foreach ($line in $TextFile) {
# Write-Host $line
$fname, $lname, [int]$a, [int]$b, [int]$c, [int]$d = $line.split(' ')
$x = "$fname $lname"
$avg = (($a + $b + $c + $d) / 4)
# Write-Host $avg
if ($x -eq $args[0]) {
Write-Host $avg
break
}
}

我使用Write-Host而不是echo,并添加了一些(注释的)带有Write-Host的行来打印一些"调试数据"。只需取消注释即可查看运行脚本时脚本内部发生的情况。

最新更新