Ho uno script che controlla lo stato di uscita la seguente funzione:Come si verifica uno stato di uscita diverso da zero di un comando in Bash?
function is_git_repository {
git branch &> /dev/null
}
che restituisce 0
se siete in un repo git, e 128
se non sei.
Non ho problemi di test per vedere se il valore restituito è 0
; le seguenti opere come previsto:
if is_git_repository ; then
echo you are in a git repo
else
echo you are NOT in a git repo
fi
Ma è quando sto cercando di verificare uno stato di uscita che è diverso da 0
quando sono in esecuzione in problemi. Ho provato quanto segue, ma nessuno di loro lavoro:
if [[ "$(is_git_repository)" != "0" ]] ; ...
restituisce sempre true (link)if [[ "$(is_git_repository)" -ne "0" ]] ; ...
restituisce sempre falsoif [[ "$(is_git_repository)" != 0 ]] ; ...
restituisce sempre trueif [[ "$(is_git_repository)" -ne 0 ]] ; ...
restituisce sempre falseif [[ ! "$(is_git_repository)" ]] ; ...
valuta sempre trueif !is_git_repository ; ...
fa solo eco alla c ritorno a me, ma senza il botto (wtf?)
Qual è il modo corretto per verificare uno stato di uscita diverso da zero di un comando in un'istruzione if?
Lei sembra essere alla ricerca di $? – devnull
La "fonte" a cui ti sei collegato non era né la risposta accettata né la risposta più votata per la domanda. –