有没有办法从bash函数调用强制回显到命令行?

时间:2014-05-09 17:17:33

标签: bash shell echo stdout

我有一个bash脚本,我用一种良好的编程风格定义了一堆函数。这些功能"返回"价值echo - 他们。所以,例如:

some_function() {
   echo "I like pie."
}

what_do_i_like=`some_function`

现在,我想在我的函数中添加一些调试语句。不幸的是,任何echo只会被变量中的调用者捕获。如,

some_function() {
    if [[ "${DEBUG}" = "${TRUE}" ]]; then
        echo "We're about to find out what we like."
    fi
    echo "I like pie."
}

what_do_i_like=`some_function`

...调试语句被what_do_i_like变量捕获。

有什么方法可以绕过这个并强制打印到命令行输出没有被变量捕获?

3 个答案:

答案 0 :(得分:5)

echo "We're about to find out what we like." >/dev/tty

答案 1 :(得分:3)

不回应stderr的工作吗? echo 1>&2 message

答案 2 :(得分:2)

syslog(3)有一个shell命令接口:

logger -p DEBUG Hi there