У меня есть скрипт с некоторыми функциями ( ~/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