Bash内置总是失败并带有特定的错误代码?

时间:2014-04-04 17:49:48

标签: bash shell

我想我可以自己写这个

unrollme-dev-dan:~ Dan$ echo 'exit $@' > fail
unrollme-dev-dan:~ Dan$ chmod +x fail
unrollme-dev-dan:~ Dan$ ./fail 42
unrollme-dev-dan:~ Dan$ echo $?
42

是否有内置功能可以做到这一点? exit当然不会起作用,因为它将退出当前进程,而不是创建子进程并退出。 test是我发现只需将01作为返回代码的最简单方法。

http://httpstat.us/类似,我需要对特定的错误代码进行单元测试。这对谷歌来说非常困难,因为大多数结果都是为了处理错误,而不是导致错误。

2 个答案:

答案 0 :(得分:4)

您可以使用返回码轻松创建子进程并从中退出:

( exit 42 )

答案 1 :(得分:2)

在POSIX中似乎没有任何内置功能。如果有一个非标准的实用程序,我不知道它,但你可以只编写一个简单的shell函数,例如

fail() {
  return $(( $1 ))
}

算术表达式防止非数字值。你可以写

a=6
fail a

并且您的退出状态为6.如果您刚刚写了return $1,那么您将从shell中收到错误。