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 stdout
nã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