如何使shell脚本返回所需的错误代码?

时间:2015-10-04 01:10:48

标签: bash

我正在编写一些测试,要求调用程序提供不同的错误代码 例如,测试脚本就像

cpu_test.sh

stress --cpu "$cpus" --timeout 30000 --verbose >> "$data"
[ $? -ne 0 ] && pass="fail" && echo "ERROR: CPU stress test has failed"

现在,我不能在单元测试中等待30000秒。因此,我想设定一条假的“压力”的道路。只返回错误代码的二进制文件:

$cat stress 
#!/bin/bash
exit 1 

但回声$?返回' 0'而不是1,因此我永远无法测试负面的测试用例。

C解决方案是: cat fio.c

#include <stdio.h>
int main()
{
return 1;
}

如何让shell脚本返回所需的错误代码?

1 个答案:

答案 0 :(得分:0)

问题在于您测试病情的方式。首先测试最简单的事情:

$ cat stress
#!/bin/bash
exit 1

$ ./stress
$ echo $?
1

你确定你没有意思:

[ $? -ne 0 ] && [ "$pass" == "fail" ] && echo "ERROR: CPU stress test has failed"