我有这个命令可能会输出错误,所以我使用 隐藏它&>/dev/null
。
现在我想运行这个命令,然后运行另一个命令。
这就是我现在所拥有的:
( aaa &>/dev/null ) && bbb
我期待看到:
Command 'bb' not found...
但我没有看到任何输出。也许是因为第一个命令不存在?如果确实存在,则将运行第二个命令。
我也尝试使用||
而不是&&
. 当第一个命令实际上成功时,这不起作用。
如何在一行中成功执行第一个命令并执行不成功的情况?
我有这个命令可能会输出错误,所以我使用 隐藏它&>/dev/null
。
现在我想运行这个命令,然后运行另一个命令。
这就是我现在所拥有的:
( aaa &>/dev/null ) && bbb
我期待看到:
Command 'bb' not found...
但我没有看到任何输出。也许是因为第一个命令不存在?如果确实存在,则将运行第二个命令。
我也尝试使用||
而不是&&
. 当第一个命令实际上成功时,这不起作用。
如何在一行中成功执行第一个命令并执行不成功的情况?
您可以使用或
;
代替。只是分隔命令,第二个命令根本不依赖于第一个命令:||
&&
;
此外,使用
( command )
意味着command
将在其自己的子 shell 中运行。如果您想对没有子 shell 的命令进行分组,则可以使用{ command; }
,但在这里您不需要任何子 shell。你可以这样做:它首先运行
aaa
,将输出和错误重定向到/dev/null
,然后运行bbb
。请注意,您不需要&&
或||
的子 shell。你本来可以这样做aaa >/dev/null && bbb
,它也会做同样的事情。最后,如果您只想忽略错误消息,则可以仅重定向标准错误,无需重定向输出:
以下是我提到的一些有用的参考: