Mam skrypt, który sprawdza stan wyjścia z następujących funkcji:Jak przetestować niezerowy status wyjścia polecenia w Bash?
function is_git_repository {
git branch &> /dev/null
}
która zwraca 0
jeśli jesteś w repo git i 128
jeśli nie jesteś.
Nie mam problemu z testowaniem, aby sprawdzić, czy zwracana wartość to 0
; następujące prace zgodnie z oczekiwaniami:
if is_git_repository ; then
echo you are in a git repo
else
echo you are NOT in a git repo
fi
Ale gdy próbuję przetestować dla stanu wyjścia, który jest niczym innym niż 0
kiedy używam do problemów. Próbowałem następujących, ale żaden z nich nie działa:
if [[ "$(is_git_repository)" != "0" ]] ; ...
zawsze ma wartość true (link)if [[ "$(is_git_repository)" -ne "0" ]] ; ...
zawsze FALSEif [[ "$(is_git_repository)" != 0 ]] ; ...
zawsze wartość trueif [[ "$(is_git_repository)" -ne 0 ]] ; ...
zawsze ocenia się falseif [[ ! "$(is_git_repository)" ]] ; ...
zawsze jest prawdziweif !is_git_repository ; ...
tylko echa c ommand z powrotem do mnie, ale bez huku (wtf?)
Jaki jest poprawny sposób sprawdzenia niezerowego statusu wyjścia polecenia w instrukcji if?
Wydajesz się szuka $? – devnull
"Źródło", z którym się łączyłeś, nie było ani zaakceptowaną, ani najwyższą odpowiedzią na to pytanie. –