linux try-catch finally

Linux shell try atrapar finalmente



try-catch finally (3)

Especie de:

{ # your ''try'' block executeCommandWhichCanFail && mv output } || { # your ''catch'' block mv log } rm tmp # finally: this will always happen

¿Hay algún comando linux bash como el java try catch finalmente? ¿O el shell de linux siempre continúa?

try { `executeCommandWhichCanFail` mv output } catch { mv log } finally { rm tmp }


Según su ejemplo, parece que está intentando hacer algo como eliminar siempre un archivo temporal, independientemente de cómo salga un script. En Bash para hacer esto, pruebe el comando integrado trap para atrapar la señal EXIT .

#!/bin/bash trap ''rm tmp'' EXIT if executeCommandWhichCanFail; then mv output else mv log exit 1 #Exit with failure fi exit 0 #Exit with success

La instrucción rm tmp en la trap siempre se ejecuta cuando la secuencia de comandos sale, por lo que el archivo "tmp" siempre intentará eliminarse.

Las trampas instaladas también pueden reiniciarse; una llamada a trap con solo un nombre de señal restablecerá el manejador de señal.

trap EXIT

Para obtener más información, consulte la página del manual de bash: man bash


mv toma dos parámetros, por lo que puede ser que realmente quieras cazar los contenidos del archivo de salida:

echo `{ execCommand && cat output ; } || cat log` rm -f tmp