bash как перенаправить вывод из функции в /dev/null

bash как перенаправить вывод из функции в /dev/null

У меня есть скрипт с некоторыми функциями ( ~/func/functions.sh) и есть другой скрипт ( ~/scripts/example.sh)

Код: functions.sh

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

Код: example.sh (работает хорошо)

#!/bin/bash

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

}

functioninExample 2>/dev/null

Код: example.sh (не работает)

#!/bin/bash

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

}

functioninExample

Как перенаправить эхо из моей функции, не редактируя ее?

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

не работает.

Как перенаправить эхо из моей функции, не перенаправляя функцию functioninExample?

решение1

Это потому, что ваша функция stdoutне печатает stderr, попробуйте

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

или перенаправить обаstderr и stdout:

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

Обратите внимание, что хорошим стилем является вывод ошибок в stderr, поэтому вместо моего ответа выше вам лучше изменить свою функцию, например так:

echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2

Связанный контент