最后写尝试捕捉壳(Writing try catch finally in shell)

2019-08-18 01:19发布

有没有像java的尝试捕捉最后一个linux bash命令? 抑或是在Linux shell一直走下去?

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

Answer 1:

嗯,有点:

{ # your 'try' block
    executeCommandWhichCanFail &&
    mv output
} || { # your 'catch' block
    mv log
}

 rm tmp # finally: this will always happen


Answer 2:

根据你的榜样,它看起来像你试图做一个类似于总是删除临时文件,无论脚本如何退出。 在bash做这个尝试的trap内建命令来捕获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

rm tmp在声明trap总是执行脚本时退出,因此文件“TMP”总是试图将其删除。

安装陷阱也可以复位; 陷阱一呼,只有在信号名称将复位信号处理程序。

trap EXIT

有关详细信息,请参阅bash的手册页: man bash



Answer 3:

mv有两个参数,那么可能是你真的想猫的输出文件的内容:

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


文章来源: Writing try catch finally in shell