语境:
我有一个 bash 脚本(实际上是其他脚本的包装器),它执行以下伪代码:
do a main function
if the main function returns:
$returncode = $? #most recent return code
if the main function runs longer than a timeout:
kill the main function
$returncode = 140 #the semi-canonical "exceeded allowed wall clock time" status
run a cleanup function
if the cleanup function returns an error: #nonzero return code
exit $? #exit the program with the status returned from the cleanup function
else #cleanup was successful
....
问题:
最后一行之后应该发生什么?
如果清理函数成功,但主函数不成功,我的程序应该返回 0(用于成功清理),还是$returncode
包含主函数的(可能非零且不成功)返回码?
对于特定的应用程序,答案很简单:“这取决于您需要脚本做什么。”
但是,这更像是一个一般/规范的问题(如果这是错误的地方,请用火杀死它):在 Bash(或一般的 Linux)编程中,您通常是否希望返回“意味着”的状态某些东西(即$returncode
)还是您忽略这些主观性并简单地返回最新功能的代码?
这不是 Bash 特定的:如果我有任何类型的独立可执行文件,它在这些情况下应该如何表现?显然,这有点值得商榷。即使有这些东西的系统,我相信很多人都会忽略它。都一样,我想知道。
干杯!