有没有像java的尝试捕捉最后一个linux bash命令? 抑或是在Linux shell一直走下去?
try {
`executeCommandWhichCanFail`
mv output
} catch {
mv log
} finally {
rm tmp
}
有没有像java的尝试捕捉最后一个linux bash命令? 抑或是在Linux shell一直走下去?
try {
`executeCommandWhichCanFail`
mv output
} catch {
mv log
} finally {
rm tmp
}
嗯,有点:
{ # your 'try' block
executeCommandWhichCanFail &&
mv output
} || { # your 'catch' block
mv log
}
rm tmp # finally: this will always happen
根据你的榜样,它看起来像你试图做一个类似于总是删除临时文件,无论脚本如何退出。 在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
mv
有两个参数,那么可能是你真的想猫的输出文件的内容:
echo `{ execCommand && cat output ; } || cat log`
rm -f tmp