我可以创build一个bash脚本,它依赖于shell中以前执行的命令的退出代码吗?

我有一堆命令只能在成功完成过去的命令之后执行。 我最初开始使用&&来完成这项工作,但是开始的结果是一些相当长的代码。

我决定尝试制作一个能够完成同样任务的脚本,但让我一次只做一行。 我已经叫它然后,这是我得到的:

 #!/bin/bash errorCode=$? if [[ $errorCode -eq 0 ]]; then $@ errorCode=$? fi return $errorCode 

我试着用一堆各种修改运行这个看看$?的价值$? 处于不同的执行阶段。 它看起来像这个脚本将始终以一个干净的石板开始,如$?的初始值$? 总是0

现在,我已经在我的.bashrc创build了一个函数,而且在我的shell中似乎工作得很好,但是我需要这个脚本,以便可以在其他脚本中使用,而这个脚本又被其他脚本调用,似乎这个函数并不总是通过各种嵌套的脚本调用持续存在。

如果我能find一种方法来完成它自己的脚本而不是一个函数将是非常好的。 有什么办法可以做到这一点?

当你想让各种脚本共享函数时,可以考虑使用一些实用脚本来创建一个目录,并获取这些脚本。
也许你需要使用当前脚本的查找目录来查找相对于正在运行的脚本的util lib。

 # example file sourcing files in your own dir, stored in the var `shlib`. source "${shlib}"/thenDo source "${shlib}"/sqlutils 

在你的情况下,我不会使用thenDo解决方案,而是使用反斜杠来写几行命令:

 action1 && action2 with a lot of arguments that \ may continue on the next line when \ you end each line with a backslash \ except at the end of your command && action3 && action4 | pipe_also_does_not_need_backslash && action5 

只记得\必须是该行的最后一个字符(后面没有空格)。