背景
在此发帖,发布了以下解决方案:
function cmakerel {
if expr match "$PWD" '*bld*' >/dev/null ; then
cmake -D....
else
echo "Wrong directory!"
fi
}
cmakerel
cmake
如果名称中PWD
有,将调用该命令。bld
不过,我通常像这样调用该命令: cmakerel && make check
问题
我如何修改上述代码,以便它在失败时返回一个值,从而第二部分make check
不会被调用?
返回某种非零值可能应该有效。
答案1
添加
return $?
cmake
在退出函数的调用下方,使用与相同的退出代码cmake
,并添加
return 1
echo
在退出调用下方1
,它是非零的,因此表示出现错误。
您也可以(如果组合调用两个命令)添加make
对此函数的调用:
cmake [args] && make -j4
或者,例如允许更细粒度的错误处理:
cmake [args]
local _ret=$?
if [ $_ret -ne 0 ] ; then
echo "cmake returned with exit code $_ret, aborting!" >&2
return $_ret
fi
make -j4
如果你将它作为一个独立程序来调用,即把该函数存储在一个 shell 脚本中,然后调用例如
/path/to/cmakerel.sh
那么您可以使用exit
而不是return
来中止整个程序/子shell。