在bash& CMD你可以rm not-exists && ls
将多个命令串在一起,每个命令只有在前面的命令成功时才有条件地运行。
在powershell中,您可以执行rm not-exists; ls
,但ls
将始终运行,即使rm
失败也是如此。
如何轻松复制bash& amp;的功能(在一行中) CMD呢?
答案 0 :(得分:4)
默认情况下,Powershell中的大多数错误都是“非终止”,也就是说,它们不会导致脚本在遇到脚本时停止执行。这就是为什么ls
即使在rm
命令发生错误后也会被执行。
但是,您可以通过几种方式更改此行为。您可以通过$errorActionPreference
变量(例如$errorActionPreference = 'Stop'
)全局更改它,或者通过设置-ErrorAction
参数(仅适用于所有cmdlet)来更改特定命令。这是对你最有意义的方法。
# 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
或者,使用一些常用的简写
rm 'not-exists' -ea 1; ls
帮助解释了-ErrorAction
参数。输入Get-Help about_CommonParameters
答案 1 :(得分:0)
要检查powershell命令的退出代码,可以使用$?
。
例如,以下命令将尝试删除not-exists
,如果成功,则会运行ls
。
rm not-exists; if($?){ ls }