有没有像linux try catch一样的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