2010-02-01 10 views

risposta

9

Usa $?, contiene gli ultimi comandi restituiscono codice

EDIT: preciso esempio:

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

* cough * '&>' not '> &' –

+0

@Phil - hai provato a eseguire '> &'? – orip

+0

Oh, giusto, ho dimenticato,> e funziona, a volte, a seconda di quanto sia ambigua la sintassi - è una cattiva abitudine, però, e meglio usare &> che non è ambigua. Scusate. –

17

Semplicemente così

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

O in un più compatto modulo:

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

Un'altra forma che uso spesso è il seguente:

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

Questo è leggermente più compatto rispetto la risposta accettata, ma non richiede di mettere il comando sulla stessa linea come in gregseth di risposta (che a volte è ciò che vuoi, ma a volte diventa troppo difficile da leggere).

Le doppie parentesi sono per espressioni matematiche in zsh. (Ad esempio, vedere here.)

Problemi correlati