是否有一个总是以失败退出的标准命令?


42

我想用失败的命令测试我的脚本。我可以使用带有错误参数的现有命令。我还可以编写一个简单的脚本,该脚本将立即失败退出。这两种方法都很容易实现并且对我有用,但是如果有用于此目的的标准命令,我想改用它。


false,也可以是任何不存在的命令。
库萨兰达

Answers:


51

您可以使用false/bin/false/usr/bin/false或shell内置):

$ false || echo It failed.
It failed.
$

您还可以exit 1从子shell 使用:

$ (exit 1) || echo Gosh, it failed too.
Gosh, it failed too.
$

另外,您可以使用1-255(含)范围内的任何数字来方便地调用exit。(大多数shell将对任何其他要退出的数字应用255模运算,因此在实践中您可以摆脱其他数字,尽管它们只是被强制进入上述范围。但是有些shell会做其他事情,例如使用exit退出。如果使用负值调用,则会出现语法错误(尽管仍然是失败状态),类似于Unix的系统仅支持0-255(含)范围内的退出代码,这就是为什么您不能依赖定义明确的行为来获得其他值的原因退出所有炮弹。)
mtraceur

1
有点琐事,除非您需要移植到真正的旧/晦涩的shell,否则也可以这样做! :(或通常返回成功的任何其他命令)。!表示否定后面命令的退出状态。:只是noop内置命令,总是会成功退出。(只需确保!在命令之后和之前保留一个空格,否则命令将被否定,否则它将尝试将其解析为一个以!字符开头的命令-或在诸如bash交互模式的shell情况下,它将解析为以下命令之一这些特殊的历史修饰符。)
mtraceur
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.