En bash, sé que debería utilizar &&
si quiero un comando B
que se ejecute sólo después de comandos A
tiene éxito:¿Cómo puedo ejecutar un comando solo después de que otros comandos se hayan ejecutado correctamente?
A && B
Pero lo que si quiero D
para ejecutarse sólo después A
, B
, C
todo ¿tener éxito? Es
'A&B&C' && D
OK?
Además, ¿qué debería hacer si quiero saber exactamente qué comando fracasó, entre A
, B
y C
(ya que se ejecutarán en muchas ocasiones, se tardará un tiempo si puedo comprobar uno por uno).
¿Es posible que la información de error salga automáticamente a un archivo de texto tan pronto como falle un comando?
En mi caso, A
, B
, C
son curl
mientras B
es rm
, y mi escritura es así:
for f in *
do
curl -T server1.com
curl -T server2.com
...
rm $f
done
¿Desea ejecutar 'B' y' C' si 'A' falla? 'A && B && C && D' se cerrará tan pronto como falle un comando. Pero si quiere ejecutar 'A',' B', y 'C' incondicionalmente, y luego ejecutar' D' solo si todos tuvieron éxito, entonces vea la respuesta de @Adam. (No, 'A & B & C && D' no hará lo que quiera; el simple' & 'hace que el comando se ejecute en segundo plano.) –
Gracias por su edición :) – erical
¿puede usar paréntesis? – Gabriel