【发布时间】:2016-04-08 10:17:33
【问题描述】:
鉴于此脚本:
& non_existent_cmd
echo "I don't want this to run"
在运行& non_existent_cmd 以使以下echo 命令永远不会运行时引发非终止错误的最简单方法是什么。
作为参考,脚本(如上所述)当前输出:
& :术语“non_existent_cmd”未被识别为 cmdlet 的名称,
函数、脚本文件或可运行的程序。检查名字的拼写,
或者如果包含路径,请验证路径是否正确并重试。
在行:1 字符:3
+ & 不存在的cmd
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (non_existent_cmd:String) [], CommandNotFoundException
+fullyQualifiedErrorId:CommandNotFoundException
我不想让它运行
【问题讨论】:
-
我要补充一点,您可以先使用
Get-Command来确定命令是否存在。那么我认为你不需要捕获错误。 -
@Bill_Stewart 也可以。这种方法的一个限制是
Get-Command不会在命令存在但不可执行的情况下显示问题,或者如果存在命令存在但随后被删除的竞争条件。 -
在我看来,与
Get-Command相比,由于理论上可能(但极为罕见)的竞争条件而编写解决方法代码(不存在命令的陷阱错误)并不是一个足够的成本/收益比。 -
@Bill_Stewart 在很多情况下,我并不反对。但是,在我正在编写的清理脚本中,如果
& git.exe ...没有返回任何输出并继续执行,则会删除许多内容,这会很糟糕。不用考虑竞争条件,我可以想象可执行文件存在但不可执行的情况。 -
很多事情可能发生。还有很多事情是极不可能的……