首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在成功时运行多个命令

如何在成功时运行多个命令
EN

Stack Overflow用户
提问于 2013-02-27 07:48:02
回答 2查看 1.1K关注 0票数 5

在bash & CMD中,您可以使用rm not-exists && ls将多个命令串在一起,只有在前面的命令成功的情况下,每个命令才有条件地运行。

在powershell中,您可以执行rm not-exists; ls,但是即使在rm失败的情况下,powershell也将始终运行。

如何轻松复制bash & CMD的功能(在一行中)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-27 09:40:01

默认情况下,Powershell中的大多数错误都是“非终止的”,也就是说,当遇到它们时,它们不会导致脚本停止执行。这就是为什么即使在rm命令中出现错误之后也会执行ls的原因。

不过,您可以通过几种方式更改此行为。您可以通过$errorActionPreference变量(例如$errorActionPreference = 'Stop')全局更改它,或者通过设置所有cmdlet通用的-ErrorAction参数仅为特定命令更改它。这是对你来说最有意义的方法。

代码语言:javascript
复制
# setting ErrorAction to Stop will cause all errors to be "Terminating"
# i.e. execution will halt if an error is encountered
rm 'not-exists' -ErrorAction Stop; ls

或者,使用一些常用的速记

代码语言:javascript
复制
rm 'not-exists' -ea 1; ls

帮助中对-ErrorAction参数进行了说明。Get-Help about_CommonParameters类型

票数 4
EN

Stack Overflow用户

发布于 2013-02-27 08:02:44

要检查powershell命令的退出代码,可以使用$?

例如,以下命令将尝试删除not-exists,如果成功,它将运行ls

代码语言:javascript
复制
rm not-exists; if($?){ ls }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15101705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档