Jet*_*tse 62 syntax shell finally try-catch
有没有像linux try catch一样的linux bash命令?或者linux shell总是继续?
try {
`executeCommandWhichCanFail`
mv output
} catch {
mv log
} finally {
rm tmp
}
Run Code Online (Sandbox Code Playgroud)
Fai*_*aiz 93
好吧,有点:
{ # your 'try' block
executeCommandWhichCanFail &&
mv output
} || { # your 'catch' block
mv log
}
rm tmp # finally: this will always happen
Run Code Online (Sandbox Code Playgroud)
小智 90
根据您的示例,无论脚本如何退出,您似乎都在尝试执行类似于始终删除临时文件的操作.在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
Run Code Online (Sandbox Code Playgroud)
脚本退出时始终执行该rm tmp
语句trap
,因此将始终尝试删除文件"tmp".
安装的陷阱也可以重置; 仅使用信号名称调用陷阱将重置信号处理程序.
trap EXIT
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅bash手册页: man bash