BASH函数中的returnand exit语句与退出代码有什么区别?
我想在每次git推送之前运行一个单元测试,如果测试失败,取消推送,但我甚至找不到预推钩,只有pre-commit和pre-rebase.
我想在Bash脚本中引发错误,消息"Test cases Failed !!!".在Bash中如何做到这一点?
例如:
if [ condition ]; then
raise error "Test cases failed !!!"
fi
Run Code Online (Sandbox Code Playgroud) 看看这个小脚本:
#!/bin/bash
function do_something() {(
set -e
mkdir "/opt/some_folder" # <== returns 1 -> abort?
echo "mkdir returned $?" # <== sets $0 to 0 again
rsync $( readlink -f "${BASH_SOURCE[0]}" ) /opt/some_folder/ # <== returns 23 -> abort?
echo "rsync returned $?" # <== sets $0 to 0 again
)}
# here every command inside `do_something` will be executed - regardless of errors
echo "run do_something in if-context.."
if ! do_something ; then
echo "running do_something did not work" …Run Code Online (Sandbox Code Playgroud)