我想用if语句处理我的函数。我尝试了这段代码,但是即使我的文件包含git diff
,它也总是返回$End_F
的值"BB"
。任何人都可以帮忙。
我寻找的“ @ AB @ CD”文件就是这样。
"@AB@CD"
Config
; Date="2019/06/12" Time="10:25:02" UTC="0"
;
Number
123456@AB@CD
答案 0 :(得分:2)
一些事情需要纠正,以使您的代码按预期工作。
Function AUTO_SELECT
{
$AT = "AA"
$AT
}
Function END_Proc
{
$End_F = "BB"
$End_F
}
Function G_BEGIN
{
$begin = "Ready"
$begin
}
Function G_END
{
$ending = "Stop"
$ending
}
$Get_SKU = Get-Content '.\Number.txt' | Where-Object {$_.Contains("@AB@CD")}
$Get_SKU
if($Get_SKU)
{
$ML = "1"
AUTO_SELECT
}
else
{
END_Proc
}
$FE_UB = "4"
if($ML -eq "1" -and $FE_UB)
{
G_BEGIN
}
if($ML -eq "1" -and !$FE_UB)
{
G_END
}
else
{
END_Proc
}
更改说明:
$Get_SKU
将存储$null
或字符串,具体取决于Where-Object
条件是否找到匹配项。结果,我换了if ($Get_SKU -eq $true)
到了if ($Get_SKU)
。如果$true
不是$Get_SKU
,则此更改将导致$null
评估。if ($ML = "1" -and $FE_UB -eq $true)
已更新为if ($ML -eq "1" -and $FE_UB)
,因为变量分配variable = value
不应在if语句条件下发生。如果要比较值,则此处的正确运算符为-eq
。关于$FE_UB
,与$Get_SKU
更改中的解释相同。$FE_UB -eq $false
已更改为!$FE_UB
。 -eq $false
运算符的删除基于对$Get_SKU
的解释。 !
字符用于有效地-not
结果。这会将值转换为布尔值,然后输出相反的布尔响应。例如,!"string data"
将输出$False
。 !$null
将输出$True
。我希望这部分很清楚。进一步的洞察力:
$True
和$False
评估
您几乎可以使任何返回布尔值的值。三种方式包括使用强制转换,-as
运算符和!
。还有许多其他方法和技巧可以做到这一点。
铸造:
$get_sku = "data"
[boolean]$get_sku
True
-as
运算符:
$get_sku = $null
$get_sku -as [boolean]
False
与!
一起玩:
$get_sku = 4
!$get_sku
False
!!$get_sku
True