是否有一个优雅的 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/