bash - 将 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
电源外壳:
$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-condition 中使用了 assignment 而不是comparison。因此,当您将其替换=
为-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
来打印一些“调试数据”。只需取消注释即可查看运行脚本时发生的情况。
推荐阅读
- php - 使用类型提示到达控制器时扩展请求丢失数据
- java - 如何在运行模拟中获取对象的实例?
- python - 如何用撇号替换字符串中的双引号(不是指定它是字符串的外部双引号)
- assembly - 难以找到输入字符串
- regex - 如何用 RegExp 替换多个模式
- excel - 如何在 VBA 中命名文件
- android - HorizontalPager 中每个可组合页面一个 ViewModel
- javascript - 像 [1,3] 这样的数组给出错误“未捕获的语法错误:无效的解构赋值目标”
- php - 将用户重定向到 PHP Wordpress 中的目标页面
- postman - Postman API 调用返回 200 但消息“失败”