Eu tenho um script Bash que executa um programa com parâmetros. Esse programa gera algum status (fazendo isso, fazendo aquilo ...). Não há nenhuma opção para este programa ficar quieto. Como impedir que o script exiba alguma coisa?
Estou procurando algo como "eco off" do Windows .
echo foo > $(tty)
um script e execute./test.sh &> /dev/null
- A saída ainda é impressa no terminal. É claro que isso não é um problema se você estiver escrevendo um script que não utiliza esses comandos./dev/null
existe no Cygwin, você não precisa usarnul
.Algo como
Isso impedirá a saída padrão e a saída de erro, redirecionando os dois para
/dev/null
.fonte
2>/dev/null
Experimentar
:
é a abreviação de "não faça nada".$()
é apenas seu comando.fonte
0
(sucesso). Vamos ver um exemplo usando o comandofalse
que sempre retorna1
(falha). Por exemplo,( echo foo | tee file ; false ) && echo bar
exibefoo
. Usando o seu truque para suprimir a saída:( : $(echo foo | tee file ; false) ) && echo bar
. Mas é exibido obar
significado do código de status de retorno0
(este não é o código de status retornadofalse
). Atualize sua resposta, fornecendo esta limitação. CheersDUMMY=$(yourcommand)
? Não tem a limitação que você mencionou. :)DUMMY=$( echo foo | tee file ; false ) && echo bar
não exibe nada. E o comando éDUMMY=$( echo foo | tee file ; true ) && echo bar
exibidobar
. Deixe-me saber se você fornecer uma resposta para voto-lo ;-) CheersUma alternativa que pode caber em algumas situações é atribuir o resultado de um comando a uma variável:
Como o Bash e outros intérpretes de linha de comando POSIX não consideram as atribuições de variáveis como um comando, o código de retorno do comando atual é respeitado.
Nota: a atribuição com a palavra-chave
typeset
oudeclare
é considerada como um comando; portanto, o código de retorno avaliado no caso é a própria atribuição e não o comando executado no sub-shell:fonte
Como o post de andynormancx , use este (se você estiver trabalhando em um ambiente Unix):
Ou você pode usar isso (se estiver trabalhando em um ambiente Windows):
fonte
> nul
no Windows com cygwin ou git bash e agora esteja preso a umnul
arquivo que não pode ser excluído, tente esta resposta , pois funcionou como um encanto.Dê uma olhada neste exemplo do The Linux Documentation Project :
Dito isto, você pode usar este redirecionamento simples:
fonte
No seu script, você pode adicionar o seguinte às linhas que você sabe que fornecerão uma saída:
Ou então você também pode tentar
fonte
>>
)?