我在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
除此之外的任何其他解决方案?
答案 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