Powershell 相当于 Linux true 命令

2024-02-14

This 堆栈溢出答案 https://stackoverflow.com/questions/2175405/what-is-bin-true解释 Linux 真正的命令是什么。我的问题是,Powershell (v5/v6) 是否也提供真正的命令?

我已经用谷歌搜索过Get-help *true*,但找不到任何相关内容。

Thx


简而言之:

  • 没有相当于的 PowerShelltrue and falseUnix 实用程序。

  • 因为 PowerShell 的条件和错误处理工作方式与 POSIX 类 shell 中的工作方式非常不同,例如bash,不需要他们。

The Unix 实用程序的主要用途true是将退出代码重置为0在您故意想要忽略先前命令失败的情况下(通过nonzero退出代码)中类似 POSIX 的 shell,例如bash,例如在条件语句中或使用 abort-on-unhandled-failures 选项set -e http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#set有效。
两者都不true也不是它的对应物,false,产生任何output- 他们的唯一目的是设定一个退出代码.

PowerShell 本身不使用退出代码(尽管您可以为了外部呼叫者的利益而设置它们exit <n>), and 它的条件做not对他们采取行动.

  • PowerShell 的自动的$?多变的抽象地类似于$?在类似 POSIX 的 shell 中,除了它报告Boolean,而 POSIX-like shell 报告退出代码;那是$?含有0在类似 POSIX 的 shell 中类似于$?含有$true在 PowerShell 中。

  • PowerShell 从不执行任何操作$? 隐含地,但您可以在 PowerShell 条件中使用它明确地,因此以下两个(为简单起见而设计)命令是等效的:

    # POSIX-like shells:
    # Event though the `ls` command fails `|| true` makes the overall
    # command succeed.
    if ls /nosuchfile || true; then echo success; fi
    
    # PowerShell:
    # `$?` would reflect `$false` after the failed `ls` command.
    # `$null = $null` is a dummy command that resets `$?` to `$true`
    # `$?` is then *output* for the `if` to test.
    if ($(ls /nosuchfile; $null = $null; $?)) { 'success' }
    

虽然 PowerShell 有自动的$true and $false变量(概念上,常数),它们是Boolean values用于比较output(数据),not commands该集不可见的状态信息(退出代码)。

请继续阅读以了解背景信息。


类 POSIX shell 中的条件与 PowerShell 中的条件

In 类似 POSIX 的 shell例如bash,条件操作于退出代码命令,即(执行后)状态信息,不是他们的output.

相比之下,电源外壳条件语句作用于命令或表达式output, i.e. data,不是状态信息。

简而言之:

  • 类 POSIX shell 中的条件作用于不可见的退出代码 and 传递成功输出(stdout 输出).

  • PowerShell 中的条件作用于成功输出 and 消耗它正在进行中。

两个炮弹都通过error输出(stderr)通过。


如果您希望 PowerShell 条件对命令(执行后)起作用status(成功与失败):

您可以使用自动的$?多变的,其行为取决于手头的命令是 PowerShell 本机命令还是外部程序(例如 Unix 实用程序):

  • 外部程序:如果程序的退出代码是0, $?反映$true, 否则$false

    • 这类似于内置的$?类 POSIX shell 中的变量,例如bash, 除了那个$?其中包含实际的退出代码;那是,$?含有0在类似 POSIX 的 shell 中与$?含有$true执行外部程序后在 PowerShell 中。

      • 要获取 PowerShell 中的实际退出代码,请使用自动的$LASTEXITCODE多变的,它反映了最近执行的退出代码外部程序(PowerShell 本机命令通常不设置退出代码,尽管您可以使用exit <n>在脚本中,主要用于报告退出代码外部呼叫者).
  • PowerShell 本机命令(cmdlet、函数、脚本):$? is $true如果命令没有从根本上失败并且没有写入 PowerShell 的错误流(例如使用Write-Error;注意stderr默认情况下,外部程序的输出是not写入 PowerShell 的错误流)。

    • 注意$?因此不一定告诉您给定命令是否认为其整体执行成功;$? being $false只是告诉你some报告了错误。
    • 但是,您可以将命令调用包装在try { ... } catch { ... }陈述,这对您有帮助区分非终止的 from 终止 errors(默认情况下只有后者触发catch堵塞);

Use of $?在 PowerShell 中并不常见,因为故障通常是用
-ErrorAction常用参数 /$ErrorActionPreference偏好变量和/或try { ... } catch { ... }声明。

也就是说,这些方法不能用于外部程序, where testing $? or $LASTEXITCODE is a must来检测故障。
这个 GitHub 讨论 https://github.com/PowerShell/PowerShell/issues/9140 and 这个 RFC 草案 https://github.com/PowerShell/PowerShell-RFC/pull/88/files呼吁将外部程序与 PowerShell 的错误处理更好地集成。

有关 PowerShell 错误处理的全面概述,请参阅这个 GitHub 问题 https://github.com/PowerShell/PowerShell-Docs/issues/1583.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell 相当于 Linux true 命令 的相关文章

随机推荐

  • 如何在Windows服务器上运行solr使其自动启动?

    如何在 Windows 服务器上运行 solr 使其自动启动 我运行它 java jar start jar 但我需要服务器自动执行此操作 使用您需要的命令创建一个批处理文件并在启动时运行它 一些these http windowsxp m
  • 场景生成器中的自定义控件 ClassNotFoundException

    我通过扩展现有控件创建了一个新控件 并且我想在我的 JavaFX 场景中使用这个新控件 我希望能够使用场景生成器编辑场景 但是将新控件添加到 FXML 文件后 我遇到了ClassNotFoundException打开场景生成器时 例如 这是
  • 为什么这段代码不会抛出 StackOverflow 异常

    在 clojure v1 6 0 中 这段代码会永远运行并消耗 100 的一个核心 defn average x y x y 2 defn improve guess x average guess x guess defn sqrt it
  • Spotify API - 在 Google Apps 脚本中检索有效访问令牌

    以下是 Spotify API 的文档 我使用的是隐式授权流程 https beta developer spotify com documentation general guides authorization guide implic
  • IntelliJ 中的 Cucumber.js 调试

    IntelliJ 有一个 Cucumber js 插件 这假设可以在 IDE 内启用运行和调试 cucumber js 的运行配置有效 但调试模式已停用 无法单击 调试 按钮 还有其他人有同样的问题并设法解决它吗 调试对我来说非常重要 谢谢
  • Python3 TypeError:列表索引必须是整数或切片,而不是 str

    我的任务是获取字符串 AAAABBBCCDAABBB 放入这样的列表中 A B C D A B 我现在已经为此工作了 2 个小时 但无法找到解决方案 到目前为止 这是我的代码 list string AAAABBBCCDAABBB i 1
  • 阅读 Facebook 中的消息

    我一直在尝试阅读来自特定用户 朋友 的消息 我在图形 API 中找不到有关查询 Facebook 消息中的消息或线程的正确文档 谁能帮帮我吗 您只能为使用您的应用程序的用户阅读消息 而不能为他的朋友阅读消息 这是一件好事 要为当前用户执行此
  • 为什么 JSF 将 UI 组件的状态保存在服务器上?

    JSF 在服务器端保存 UI 组件的状态到什么时间以及 UI 组件的状态信息具体何时被删除从服务器内存 当应用程序上的登录用户浏览页面时 组件的状态是否会继续在服务器上累积 我不明白在服务器上保持 UI 组件状态有什么好处 直接将验证 转换
  • 签署 Windows EXE 文件

    我有一个EXE http en wikipedia org wiki EXE我想要签署该文件 以便 Windows 不会警告最终用户来自 未知发布者 的应用程序 我不是 Windows 开发人员 所讨论的应用程序是从生成屏幕保护程序的应用程
  • Python:在类实例初始化之前修改传递的参数

    我正在尝试用 Python 实现简化的术语重写系统 TRS 符号代数系统 为此 我真的希望能够在类实例实例化过程中的特定情况下拦截和修改操作数 我想出的解决方案是创建一个元类来修改典型的call类对象 类型为 type 的行为 class
  • 如何在 Javascript 中说明多重图? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 这个问题正在寻找一种实用且简单的方法来使用 Javascript 绘制多重图 首先看this http
  • 在 MVVM 中,ViewModel 响应视图中用户操作的最佳方式是什么?

    我在 MVVM 中的理解是 View 知道 ViewModel ViewModel 知道 Model 但它不能向上工作 因此 Model 对 ViewModel 一无所知 并且 ViewModel 对 View 一无所知 So ViewMo
  • iOS8“现在”更改动态单元格的高度,重新内部单元格内容

    这是一个动态单元格 注意 在示例中 文本不是数据驱动的 它只是单元格本地的一些文本 例如 帮助文本 在运行时 使用单元格内实际的按钮将 UILabel 的 text 从一个单词更改为多行 iOS 完美地调整单元格和表格的大小 but 仅当单
  • 如何将静态古腾堡块转换为使用 PHP 注册的动态块?

    我正在尝试将我为 WordPress 创建的静态古腾堡块转换为动态块 我已经寻找其他解决方案 但没有成功 这个问题 将使用 wordpress create block 创建的静态 gutenberg 块转换为使用 PHP 注册的动态块的正
  • 什么是 Java 数据挖掘,JDM?

    我正在看JDM 这只是一个与其他进行实际数据挖掘的工具交互的 API 吗 或者这是一组包含实际数据挖掘算法的包 啊 奇迹互联网 http en wikipedia org wiki Java Data Mining Java 数据挖掘 JD
  • 在 Keycloak:18.x 中导入领域

    我无法将任何领域导入 Keycloak 18 0 0 那是 Quarkus 不再是 Wildfly 发行版 文档here https www keycloak org server importExport说它应该非常简单 通过将我导出的r
  • Bigtable CSV 导入

    我在多个文件 存储在存储桶中 中有一个大型 csv 数据集 gt 5TB 我需要将其导入到 Google Bigtable 中 这些文件的格式为 行键 s1 s2 s3 s4文本 整数 整数 整数 整数 hbase 有一个 importts
  • pgloader - 无法以用户“root”身份连接到“localhost”(端口 3306)的 mysql:发出条件 QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION 信号

    我正在尝试将我的 Rails 应用程序从 mysql 迁移到 postgres 因为我们已经运行了应用程序 所以我使用 pgloader 将 mysql 数据移动到 postgres 数据库 但当我这样做时 pgloader mysql r
  • 如何从声纳中排除简单的 getter 和 setter?

    有的是way http skitch img s3 amazonaws com 20100903 ekunteuietuq9j394prku9d37t jpg从声纳报告中排除 getter 和 setter 假设我有 2 个 吸气剂 pub
  • Powershell 相当于 Linux true 命令

    This 堆栈溢出答案 https stackoverflow com questions 2175405 what is bin true解释 Linux 真正的命令是什么 我的问题是 Powershell v5 v6 是否也提供真正的命