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

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

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

Código: funções.sh

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

Código: exemplo.sh (funciona bem)

#!/bin/bash

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

}

functioninExample 2>/dev/null

Código: exemplo.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?

Responder1

Isso ocorre porque sua função stdoutnão está imprimindo stderr, tente

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

ou redirecione ambosstderr e stdout:

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

Observe que é um bom estilo imprimir erros 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

informação relacionada