Fax*_*Max 2 io-redirection shell-script
我有一个带有一些功能的脚本 ( ~/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
}
Run Code Online (Sandbox Code Playgroud)
代码:example.sh(运行良好)
#!/bin/bash
. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2}
}
functioninExample 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
代码:example.sh(不起作用)
#!/bin/bash
. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2} 2>/dev/null
}
functioninExample
Run Code Online (Sandbox Code Playgroud)
如何在不编辑函数的情况下重定向函数的回显?
NameofFunction ${VAR1} ${VAR2} 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
不起作用。
如何在不重定向 functioninExample 函数的情况下重定向函数中的 echo?
这是因为您的函数正在打印为stdoutnot stderr,请尝试
NameofFunction ${VAR1} ${VAR2} >/dev/null
Run Code Online (Sandbox Code Playgroud)
或者重定向stderr 和 stdout:
NameofFunction ${VAR1} ${VAR2} >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
请注意,将错误打印到 是一种很好的风格stderr,因此您应该更好地更改您的函数,而不是上面的答案,如下所示:
echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2
Run Code Online (Sandbox Code Playgroud)