我有一个bash脚本,在这个bash脚本中我有一个像这样的JAVARESULT变量:
JAVARESULT=`java -cp ... parser_file $file $someextravar`
我想要的是在日志文件中捕获此结果变量的stderr和stdout。
echo "$JAVARESULT" > $LOG_FILE
但我只得到stdout而不是stderr。我尝试过:
echo "$JAVARESULT" &> $LOG_FILE
但是我没有在日志文件中得到java错误。
答案 0 :(得分:3)
在每个基于Unix的系统中,每个进程至少打开三个文件描述符。如您所知,文件描述符由数字标识。这三个标准文件描述符是:
stdin
stdout
stderr
您要做的是将stderr
重定向到stdout
,然后将stdout
重定向到文件。因此,在您的JAVARESULT
变量中,您只需附加:
2>&1
您在这里说的是:将stderr
(文件描述符2)重定向到stdout
(文件描述符1)。
答案 1 :(得分:0)
试试这个:
echo“$ JAVARESULT”> $ LOG_FILE 2>& 1