2010-02-01 5 views

Antwort

9

Verwenden $? es die letzten Befehle enthält Return-Code

EDIT: präzises Beispiel:

git status >& /dev/null 
if [ $? -eq 0 ]; then 
    echo "git status exited successfully" 
else 
    echo "git status exited with error code" 
fi 
+1

* hust * '&>' nicht '> &' –

+0

@Phil - haben Sie versucht, '> &'? – orip

+0

Oh richtig, vergessen,> & funktioniert, manchmal, je nachdem wie uneindeutig die Syntax ist - es ist eine schlechte Angewohnheit, und besser zu verwenden &> die nicht mehrdeutig ist. Es tut uns leid. –

17

einfach wie die

if git status &> /dev/null 
then 
    echo "is a git repo"; 
else 
    echo "is not a git repo"; 
fi 

Oder in einem kompakteren Formular:

git status &> /dev/null && echo "is a git repo" || echo "is not a git repo" 
0

Eine andere Form, die ich häufig verwenden, ist die folgende:

git status &> /dev/null 
if (($?)) then 
    ... 

Dies ist etwas kompakter als die akzeptierte Antwort, aber es ist nicht erforderlich den Befehl auf der gleichen Linie wie in gregseth des setzen Antwort (was manchmal ist, was Sie wollen, aber manchmal zu schwer zu lesen).

Die doppelten Klammern sind für mathematische Ausdrücke in zsh. (Siehe zum Beispiel here.)

Verwandte Themen