bash - 如果程序失败,powershell 脚本将停止(如 bash `set -o errexit` )

标签 bash powershell

是否有一个优雅的 Powershell 脚本设置可以在程序失败时退出正在运行的 Powershell 脚本(或 shell 实例)?

我在想像 Bash 功能 set -o errexit(或 set -e)之类的东西,但适用于 Powershell。在该功能中,如果 bash 脚本中的程序失败(进程返回代码不是 0),则 bash shell 实例会立即退出。

在powershell中,脚本可以显式检查$LastExitCode$? (if($?){exit})。但是,对于每个程序调用来说,这变得很麻烦。也许powershell有自动检查程序返回码并使用react的功能?

用脚本解释

使用虚构的成语Set-Powershell-Auto-Exit

Set-Powershell-Auto-Exit 'ProgramReturnCode'  # what should this be?
& program.exe --fail  # this program fails with an error code
& foo.exe             # this never runs because script has exited

最佳答案

不幸的是,从 PowerShell Core 7.0.0-preview.3 开始,当外部程序报告非零值时,PowerShell没有提供自动退出脚本的方法退出代码。

  • 正在讨论添加支持this RFC proposal .

  • 对于 PowerShell-native 命令(cmdlet、脚本、函数),$ErrorActionPreference = 'Stop' 可以使用,这会导致退出代码 1.

    • 如果您需要对报告的退出代码进行更多控制,请参阅 this answer .
    • 有关 PowerShell 如何向外界报告退出代码的概述,请参阅 this answer .
  • 目前,您必须测试 $LASTEXITCODE -eq 0 显式并据此采取行动,但作为解决方法您可以对所有外部程序调用使用辅助函数,如this answer 中所示.

关于bash - 如果程序失败,powershell 脚本将停止(如 bash `set -o errexit` ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949031/

相关文章:

linux - bash: BASH_XTRACEFD: 5: 跟踪文件描述符的值无效

powershell - 用于构建服务器的 Azure 凭据

string - 就地转换哈希表值

bash 'read -t 0' 在输入行后卡住

Bash - 根据特定行上的文本匹配删除奇数/偶数行

bash - 删除 (STDIN)= BASH 中的标签

C# 使用 Powershell.AddParameter 有两个条件

regex - 获取特定区域的字符串

powershell - 如何授权 GAS 编辑 Google 电子表格的范围

linux - 使用 bash shell 解析 CSV 以打印得分最高的行