Eu tenho esse comando que pode gerar um erro, então eu o escondo usando &>/dev/null
.
Agora eu gostaria de executar este comando e, em seguida, executar outro comando.
Isto é o que tenho agora:
( aaa &>/dev/null ) && bbb
Estou esperando ver:
Command 'bb' not found...
Mas não vejo nenhuma saída. Talvez seja porque o primeiro comando não existe? Se existir, o segundo comando será executado.
Eu também tentei usar ||
em vez de &&
. Isso não funciona quando o primeiro comando realmente é bem-sucedido.
Como faço para conseguir isso tanto para uma primeira execução de comando bem-sucedida quanto para um caso malsucedido em uma única linha?
Você pode usar
;
em vez de||
ou&&
. O;
apenas separa os comandos e o segundo comando não depende do primeiro:Além disso, using
( command )
significa quecommand
será executado em seu próprio subshell. Você pode usar{ command; }
se quiser agrupar comandos sem subshells, mas aqui você não precisa de nada disso. Você pode simplesmente fazer:Isso será executado primeiro
aaa
, redirecionando a saída e o erro para/dev/null
, e então será executadobbb
. Observe que você não precisava do subshell&&
ou||
também. Você poderia simplesmente ter feitoaaa >/dev/null && bbb
e teria feito a mesma coisa.Finalmente, se tudo o que você deseja é ignorar a mensagem de erro, você pode redirecionar apenas o erro padrão, sem necessidade de redirecionar também a saída:
E aqui estão algumas referências úteis para as coisas que mencionei: