你误解了括号 - 它们运行命令替换.这样做是捕获在替换中运行的进程的输出,然后它将作为参数(默认情况下由换行符分隔)用于外部进程.
这意味着您test
将获得完整的输出make
.
你想要做的只是在if make allUnitTests
没有任何问题的情况下运行,因为你只对返回值感兴趣.
如果您想在运行make
和检查其返回值之间执行某些操作,"$ status"变量始终包含最后一个命令的返回值,因此您可以保存:
make allUnitTests set -l makestatus $status # Do something else if test $makestatus -eq 0 # Do the if-thing else # Do the else-thing end