我有一个带有一些功能的脚本 ( ~/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 函数的情况下重定向函数中的 echo?
答案1
这是因为您的函数正在打印为stdout
not 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