将我的echo输出重定向到文件

时间:2016-10-21 13:42:00

标签: linux shell scripting

我在shell脚本中实现逻辑

#!/bin/bash
LOGFILE=">> /tmp/testlog.txt"

echo "My log output" $LOGOUTPUT

输出: 我的日志输出>> /tmp/testlog.txt

有没有办法将我的echo输出重定向到/tmp/testlog.txt,而不是在控制台上显示上面的行。

注意:请不要建议以下解决方案

echo "My log ouptut" >> /tmp/testlog.txt

除此之外的任何其他解决方案?

3 个答案:

答案 0 :(得分:0)

尝试使用LOGFILE变量之外的重定向字符。

#!/bin/bash
LOGFILE=/tmp/testlog.txt

echo "My log output" >> $LOGFILE

答案 1 :(得分:0)

使用exec > >(tee -i $logfile)

我通常以这种方式使用它:

function start_logging() {
    logfile="$1"
    touch $logfile
    exec > >(tee -i $logfile)
    exec 2>&1 #also redirect stderr
    return 0
}

调用此函数为其提供/tmp/test.log,例如,它会将所有程序输出记录在文件中,并防止它显示在std和err输出上。

编辑: 仅重定向到文件:>> "filename.t 2>&1

答案 2 :(得分:0)

function logme()
{
    #Send logs to logfile
    logfile="/tmp/logfile.txt"

    #Send logs to stdout
    #logfile="/dev/stdout"

    cat >> $logfile
}

echo "Hello" | logme
echo "Friend" | logme