gpt4 book ai didi

PowerShell - cmdlet 如何返回值?

转载 作者:行者123 更新时间:2023-12-03 14:24:30 25 4
gpt4 key购买 nike

请考虑以下 PowerShell 赋值语句:

$rc = (gci -r -fi *.rar)

如果目录结构中存在 rar 文件,则 echo $? 显示以下内容:

    Directory: C:\file tests

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 7/22/2012 7:09 PM 3699776 somefile.rar

很好。现在考虑这个 PowerShell if 语句:

if (gci -r -fi *.rar)
{
echo "Rar files found"
}
else
{
echo "No rar files"
}

在 if 语句中,来自 gci cmdlet 的返回被视为 bool 值。但是在前面的赋值语句的情况下,相同 cmdlet 的返回会产生一个字符串输出。

我知道 PS 是一个对象外壳。我了解 cmdlet 的行为因上下文而异。但我不明白的是这是如何实现的,以及使用了什么机制。

具体来说: if 语句使用什么魔法可以将 gci 的返回值视为 bool 值?如果我想在其他地方(在 if 语句之外)使用该机制,我需要做什么?是否有某种“转换为 bool ”运算符?例如

$rc = (Cast following to boolean)(gci -r -fi *.rar)

最佳答案

这张表给你答案。

True                                         False
~~~~ ~~~~~
$TRUE $FALSE
Any string of length > 0 Empty string
Any number ≠ 0 Any number = 0
Array of length > 1 Array of length 0
Array of length 1 whose element is true Array of length 1 whose element is false
A reference to any object <<<<< $NULL

这背后的想法是使用类似的检查来验证对象是否正确初始化。

关于PowerShell - cmdlet 如何返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16818041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com