当前位置: 首页 > 知识库问答 >
问题:

以下内容的PowerShell语法:?接线员?[副本]

寇丰
2023-03-14

但是我需要安排在叶子元素没有内容或者根本不存在的情况下发出一个空行。

我可以将内容分配给一个变量,测试变量是否为空,如果是,则将其设置为空字符串,然后将其写到文件中,

$foo=$di_xmlresponse.result.gudid.device.VersionModelNumber if(!$foo)$foo=''$foo Out-File-filePath$outputfile-append-noclobber-encoding ascii

但我希望能找到更简洁的表达方式。有吗?

共有1个答案

邹麻雀
2023-03-14

不幸的是,从PowerShell Core 6.1.0开始,PowerShell没有三元[条件]运算符(例如,
条件?if-true-value:else-value)或空合并运算符(例如,
possiblynullvalue??valueifnull)。

不过,正在提议增强语言以支持这些功能。
如果您希望看到这种情况发生,请在那里发出您的声音--即使是简单的“竖起大拇指”也会有所帮助。

在您的特定案例中,您正在寻找空合并运算符,并且有一些次优的变通方法

定义一个自定义函数,如Ryan Schlueter对三元运算符的答案所示。

对于空合并运算符,它可以是这样的:

function ?? ($PossiblyNull, $ValueIfNull) { 
  if ($null -eq $PossiblyNull) { $ValueIfNull } else { $PossiblyNull }
}

应用于代码:

?? $DI_XMLResponse.result.gudid.device.versionModelNumber '' |
  Out-File -FilePath $OutputFile -Append -NoClobber -Encoding ascii 
$foo = $DI_XMLResponse.result.gudid.device.versionModelNumber
($foo, '')[$null -eq $foo] | Out-File -FilePath $OutputFile -Append -NoClobber -Encoding ascii
    null

这种方法的缺点:

>

  • 不应用短路逻辑;即在选择合适的元素之前,对两个数组元素进行无条件求值。

    如果只需要进行空合并,则必须首先将用于测试$null的值存储在变量中;例如,要模拟
    (Get-Foo Bar)?'(none)'
    您必须首先将Get-Foo bar的输出保存在辅助变量中,以便可以编写:
    $aux=Get-Foo bar;($AUX,“(无)”)[$NULL-EQ$AUX]

  •  类似资料:
    • 内容生态平台资源接入(该工具已下线) 百度内容生态平台 百度内容生态平台服务于整个百度搜索,适用于搜索结果页资讯推荐、百度好看、内容传播联盟多个产品线。XML数据接口在百度站长平台。 百度站长平台(zhanzhang.baidu.com):媒体机构类和个人站点类资源方以XML结构化数据接口方式将批量内容接入百度站长平台 资源方接入流程 媒体机构类和个人站点类资源接入: Ø  步骤一、访问百度站长平

    • 这是我的xpath: Selenium WebDriver代码忽略了上述xpath中::之后的所有内容。 下面是当我在上面使用xpath作为定位器来标识页面中的元素时,在selenium中遇到的错误。 关于如何让webdriver接受上面的整个xpath,有什么想法或建议吗? 下面是HTML代码: 以下是WebDriverJava代码: 元素是一个复选框,我试图通过应用方法来检查它。单击()。 下

    • 本文向大家介绍PowerShell读取文本文件指定行内容的方法,包括了PowerShell读取文本文件指定行内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍一个PowerShell中如何一步到位的获取到一个文本文件的第N行。比如一个文本文件,它有1000行,我想把第500行的内容直接取出来的,最简单的方法是通过PowerShell来实现。 在PowerShell中,可以通过Get-Co

    • 如果您对构建工具插件的工作方式感兴趣,可以查看GitHub上的spring-boot-tools模块。 附录中介绍了可执行jar格式的更多技术细节。 如果您有与构建相关的特定问题,可以查看“操作方法”指南。

    • GitHub存储库中提供了一些示例groovy脚本,您可以使用它们来尝试Spring Boot CLI。 整个源代码中还有广泛的Javadoc。 如果您发现自己达到了CLI工具的限制,那么您可能希望将应用程序转换为完整的Gradle或Maven构建的“Groovy项目”。 下一节将介绍Spring Boot的“构建工具插件”,您可以将其与Gradle或Maven一起使用。

    • 查看Cloud Foundry,Heroku,OpenShift和Boxfuse网站,了解有关PaaS可提供的各种功能的更多信息。 这些只是四个最受欢迎的Java PaaS提供商。 由于Spring Boot非常适合基于云的部署,因此您也可以自由地考虑其他提供程序。 下一节将介绍Spring Boot CLI,或者您可以继续阅读有关构建工具插件的内容。