Linux 如何检测bashshell命令后面是否跟有逻辑&&;和或| |或?

Linux 如何检测bashshell命令后面是否跟有逻辑&&;和或| |或?,linux,bash,shell,Linux,Bash,Shell,我喜欢对我使用的常用构建命令使用简短的名称。我还希望他们在完成任务后通知我发送,这样我就可以在等待时执行多项任务,而不必观看终端 现在,我希望命令不会通知我是否链接它们。e、 g alias b='command and parameters for my build; notify-send' alias b2='command and parameters for a second type of build; notify send' $ b // I am notifi

我喜欢对我使用的常用构建命令使用简短的名称。我还希望他们在完成任务后通知我发送,这样我就可以在等待时执行多项任务,而不必观看终端

现在,我希望命令不会通知我是否链接它们。e、 g

  alias b='command and parameters for my build; notify-send'
  alias b2='command and parameters for a second type of build; notify send'

  $ b
  // I am notified when it completes, just once.

  $ b && b2
  // Today, I am notified twice, when b completes and when b2 does.
  // I would like to only be notified when they all complete.
  // (and I would rather not type b && b2 && notify-send)

因此,在bash中,命令能否检测到它们后面跟着一个
&&&
|
否。通常的答案是将通知移到命令之外:

b && b2; notify-result $?


现在,如果您将
b
b2
实现为shell函数而不是外部命令,那么您可以进行一些自省——查看
BASH_源代码
数组来检查代码调用中涉及的堆栈帧——但这是非常脆弱的,从理论上讲并不是一个好的实践,可以在bash中实现这一点——为了
set-e
,它跟踪检查命令和未检查命令之间的区别;可以向上游发送暴露该标志状态的补丁;但是,它目前不可访问。也就是说,
如果foo
也设置了
checked
标志,那么这可能正是您想要的,也可能不是您想要的(如果您实际上只想在
&
|
上触发)。