用于PowerShell中循环的条件逻辑
我开始使用PowerShell,并使用“For循环”创建条件逻辑。当我运行脚本时,没有结果。但是,如果我用一个公式替换这三个函数,它就会起作用。 以下是脚本:用于PowerShell中循环的条件逻辑,powershell,powershell-2.0,Powershell,Powershell 2.0,我开始使用PowerShell,并使用“For循环”创建条件逻辑。当我运行脚本时,没有结果。但是,如果我用一个公式替换这三个函数,它就会起作用。 以下是脚本: for ($OTK = 1; $OTK -le 10; $OTK++) { if ($OMAT = 6) { if ($OMAF = 7) { function TK { param ([INT]$OTK) $OTK * 2 }
for ($OTK = 1; $OTK -le 10; $OTK++)
{
if ($OMAT = 6)
{
if ($OMAF = 7)
{
function TK
{
param ([INT]$OTK)
$OTK * 2
}
function MAT
{
param ([INT]$OMAT, $TK)
$TK * $OMAT /5
}
function MAF
{
param ([INT]$OMAF,$MAT)
$MAT * $OMAF /5
}
}
Write-Output $MAF
}
}
我的问题是:
1、如何使这个循环工作
2、如何独立于其他源(ps1或psm1)调用这些函数
3,有可能将这两个if语句组合起来吗?
类似于if($OMAT=6-和$OMAF=7)
我尝试了这种格式,但它不起作用。我“认为”这就是你想要的:
function TK
{
param([int]$OTK)
$OTK * 2
}
function MAT
{
param([int]$OMAT, $TK)
$TK * $OMAT / 5
}
function MAF
{
param([int]$OMAF,$MAT)
$MAT * $OMAF / 5
}
$OMAT = 6
$OMAF = 7
for ($OTK = 1; $OTK -le 10; $OTK++)
{
if ($OMAT -eq 6 -and $OMAF -eq 7)
{
MAF $OMAF (MAT $OMAT (TK $OTK))
# (TK $OTK) is the output of TK that is fed into
# MAT which takes $OMAT and the output of TK, that is fed into
# MAF which takes $OMAF and the output of MAT
}
}
在原始脚本中,您定义了函数,但从未调用它们。正如您在评论中指出的,您使用
=
进行比较和分配。在PowerShell中,相等比较运算符是-eq
,-ieq
和-ceq
=
是赋值。相等检查是-eq
。你期望得到什么样的结果?您从未在代码中为$MAF
赋值。此循环用于在$OTK
不断增加时计算MAF的值。这三个函数可以替换为$MAF=($OTK*2*$OMAT/5)*$OMAF/5
那么为什么要使用这个函数呢?你想实现什么,什么不能通过$MAF=($OTK*2*$OMAT/5)*$OMAF/5实现?我想制作一些包含一些函数的模块。脚本可以从模块中调用不同的函数。脚本中的函数可以被另一个函数替换,而不会影响脚本的其他部分。就像一个模块化的程序。这就是我不想使用单一公式的原因。我希望它能解释我要做的事情。我上面脚本中的每个函数稍后都会放到模块中。这将是我问的第二个问题。