繁体   English   中英

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

[英]Can I create a bash script that relies on the exit code from the previously executed command in my shell?

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

我决定尝试创建一个可以完成相同任务的脚本,但允许我一次一行。 我把它称之为thenDo ,这就是我所拥有的:

#!/bin/bash

errorCode=$?
if [[ $errorCode -eq 0 ]]; then
  $@
  errorCode=$?
fi
return $errorCode

我试过用一堆各种修改来运行这个,看看$?的价值是$? 处于不同的执行阶段。 看起来这个脚本总是以一个干净的平板开始,就像$?的起始值一样$? 总是0

现在,我已经在我的.bashrc创建了一个函数,这似乎在我的shell中运行得很好,但我需要这个脚本,以便它可以在其他脚本中使用,这些脚本再次由其他脚本调用,并且它似乎这个函数并不总是通过各种有时嵌套的脚本调用来持久化。

如果我能在自己的脚本中找到一种方法来代替函数,那将是非常好的。 有没有办法让这种情况发生?

如果你想拥有的各种脚本共享功能,考虑做一些实用工具脚本的目录和source这些脚本。
也许您需要使用当前脚本的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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM