bash como redirecionar a saída de uma função para / dev / null

1

Eu tenho um script com algumas funções ( ~/func/functions.sh ) e eu tenho o outro script ( ~/scripts/example.sh )

Código: functions.sh

 #!/bin/bash
 function NameofFunction()
 {
  # do something...
  echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2
  }

Código: example.sh (funciona bem)

#!/bin/bash

. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2}

}

functioninExample 2>/dev/null

Código: example.sh (não funciona)

#!/bin/bash

. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2} 2>/dev/null

}

functioninExample

Como posso redirecionar o eco da minha função sem editar a função?

NameofFunction ${VAR1} ${VAR2} 2>/dev/null 

não funciona.

Como posso redirecionar o eco da minha função sem redirecionar a função functioninExample?

    
por FaxMax 28.09.2016 / 15:07

1 resposta

3

Isso ocorre porque sua função está imprimindo para stdout não stderr , tente

NameofFunction ${VAR1} ${VAR2} >/dev/null

ou redirecione os dois stderr e stdout :

NameofFunction ${VAR1} ${VAR2} >/dev/null 2>&1

Note que é um bom estilo imprimir erros para stderr , então, em vez da minha resposta acima, você deve alterar melhor sua função, assim:

echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2
    
por 28.09.2016 / 15:08