Quiero hacer algo como esto:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
¿Cómo debería hacerlo?
bash
shell-script
exit-status
michelemarcon
fuente
fuente
Respuestas:
Estos deberían hacer lo que necesita:
o
fuente
||
no mira la salida del primerecho
comando.Just try whoami && whoami && echo success || echo epic fail
y ahorawhoami && whoareyou && echo success || echo epic fail
. No puedo entender lo que quieres decir con "no mira la salida del primer comando de eco"cmd1 && cmd2
Petr Uzel es perfecto pero también puedes jugar con los magic $ ?.
PS contiene el código de salida del último comando ejecutado, y si lo usa, puede escribir sus scripts de manera bastante flexible.
Esta pregunta toca un poco este tema, ¿La mejor práctica para usar $? en bash? .
Entonces también puede reaccionar a diferentes códigos de salida y hacer diferentes cosas si lo desea.
fuente
El pseudocódigo de la pregunta no corresponde al título de la pregunta.
Si alguien necesita saber realmente cómo ejecutar el comando 2 si el comando 1 falla, esta es una explicación simple:
cmd1 || cmd2
: Esto se ejecutarácmd1
y, en caso de falla, se ejecutarácmd2
cmd1 && cmd2
: Esto se ejecutarácmd1
y, en caso de éxito, se ejecutarácmd2
cmd1 ; cmd2
: Esto se ejecutarácmd1
, y luego se ejecutarácmd2
, independientemente de la falla o el éxito de la ejecucióncmd1
.fuente