3ch*_*eel 7 bash shell if-statement exit-code
我有一个脚本,检查以下功能的退出状态:
function is_git_repository {
git branch &> /dev/null
}
Run Code Online (Sandbox Code Playgroud)
0
如果您使用的是git仓库,那么会返回,128
如果您不是.
我测试返回值是否有问题0
; 以下按预期工作:
if is_git_repository ; then
echo you are in a git repo
else
echo you are NOT in a git repo
fi
Run Code Online (Sandbox Code Playgroud)
但是,当我试图测试退出状态时,除了0
我遇到问题时,这是其他任何事情.我尝试了以下,但没有一个工作:
if [[ "$(is_git_repository)" != "0" ]] ; ...
总是评估为真(链接)if [[ "$(is_git_repository)" -ne "0" ]] ; ...
总是评估为假if [[ "$(is_git_repository)" != 0 ]] ; ...
总是评估为真if [[ "$(is_git_repository)" -ne 0 ]] ; ...
总是评估为假if [[ ! "$(is_git_repository)" ]] ; ...
总是评估为真if !is_git_repository ; ...
只是将命令回复给我,但没有爆炸(wtf?) 在if语句中检查命令的非零退出状态的正确方法是什么?
考虑布尔快捷方式而不是if
语句:
is_git_repository || echo you are NOT in a git repo
Run Code Online (Sandbox Code Playgroud)