如何隐藏命令输出,然后运行另一个命令

如何隐藏命令输出,然后运行另一个命令

我有这个命令可能会输出错误,所以我使用 隐藏它&>/dev/null

现在我想运行此命令,然后运行另一个命令。

这就是我现在所拥有的:

( aaa &>/dev/null ) && bbb

我期望看到:

Command 'bb' not found...

但是我没有看到任何输出。可能是因为第一个命令不存在?如果存在,则第二个命令将运行。

我也尝试使用||而不是&&。当第一个命令确实成功时,这不起作用。

如何在一行中实现第一次命令运行成功和不成功的情况?

答案1

您可以使用;而不是||&&;just 分隔命令,并且第二条命令完全不依赖于第一条命令:

$ false; echo yeah
yeah
$ true; echo yeah
yeah
$ false || echo yeah
yeah
$ false && echo yeah
$ true && echo yeah
yeah
$ true || echo yeah
$ 

此外,使用( command )意味着command将在其自己的子 shell 中运行。如果您想在没有子 shell 的情况下对命令进行分组,则可以使用{ command; },但在这里您不需要任何这些。您只需执行以下操作:

aaa &>/dev/null ; bbb

它将首先运行aaa,将输出和错误重定向到/dev/null,然后运行bbb​​。请注意,您不需要&&||的子 shell。您可以直接执行aaa >/dev/null && bbb,它会做同样的事情。

最后,如果您只想忽略错误消息,那么您可以仅重定向标准错误,而不需要重定向输出:

aaa 2>/dev/null

以下是我所提到内容的一些有用参考:

相关内容