我有一个脚本,它检查以下函数的退出状态:
function is_git_repository {
git branch &> /dev/null
}
如果你在一个 Git 仓库中,它将返回 0
,否则返回 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 ; ...
只是将命令原样返回给我,但没有感叹号(什么鬼?)
在if语句中检查命令的非零退出状态的正确方法是什么?