2010-02-01 6 views

Respuesta

9

Uso $?, que contiene los últimos comandos devuelven código

EDIT: ejemplo preciso:

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

* tos * '&>' not '> &' –

+0

@Phil - ¿ha intentado ejecutar '> &'? – orip

+0

Ah, sí, lo olvidé,> y funciona, a veces, dependiendo de cuán ambigua sea la sintaxis, aunque es un mal hábito, y es mejor usar &>, que no es ambiguo. Lo siento. –

17

simplemente como la

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

O de una manera más compacta formulario:

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

Otra forma que utilizo a menudo es el siguiente:

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

Esta cifra es ligeramente más compacto que la respuesta aceptada, pero no le requiere para poner el comando en la misma línea que en el de gregseth respuesta (que a veces es lo que quiere, pero a veces se vuelve demasiado difícil de leer).

Los paréntesis dobles son para expresiones matemáticas en zsh. (Por ejemplo, vea here.)

Cuestiones relacionadas