我有一个脚本可以检查以下函数的退出状态:
function is_git_repository {
git branch &> /dev/null
}
0
如果你在一个 git repo 中,它会返回,128
如果你不是。
我没有问题测试返回值是否为0
; 以下按预期工作:
if is_git_repository ; then
echo you are in a git repo
else
echo you are NOT in a git repo
fi
但是,当我尝试测试退出状态时,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 语句中检查命令的非零退出状态的正确方法是什么?