У меня есть сценарий, который проверяет состояние выхода из следующей функции:Как проверить отсутствие ненужного статуса выхода команды в Bash?
function is_git_repository {
git branch &> /dev/null
}
который возвращает 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" ]] ; ...
всегда принимает значение ИСТИНА (link)if [[ "$(is_git_repository)" -ne "0" ]] ; ...
всегда принимает значение ложьif [[ "$(is_git_repository)" != 0 ]] ; ...
всегда истиненif [[ "$(is_git_repository)" -ne 0 ]] ; ...
всегда имеет значение falseif [[ ! "$(is_git_repository)" ]] ; ...
всегда имеет значениеif !is_git_repository ; ...
просто перекликается с c ommand назад ко мне, но без перерыва (wtf?)
Каков правильный способ проверить ненулевое состояние выхода команды в инструкции if?
Вы, кажется, ищет $? – devnull
«Источник», с которым вы связались, не был ни принятым, ни самым высоким голосовым ответом на вопрос. –