从stash脚本变量中回显stderr和stdout到文件

时间:2014-01-10 10:53:00

标签: linux bash stdout stderr

我有一个bash脚本,在这个bash脚本中我有一个像这样的JAVARESULT变量:

JAVARESULT=`java -cp ... parser_file $file $someextravar`

我想要的是在日志文件中捕获此结果变量的stderr和stdout。

echo "$JAVARESULT" > $LOG_FILE

但我只得到stdout而不是stderr。我尝试过:

echo "$JAVARESULT" &> $LOG_FILE

但是我没有在日志文件中得到java错误。

2 个答案:

答案 0 :(得分:3)

在每个基于Unix的系统中,每个进程至少打开三个文件描述符。如您所知,文件描述符由数字标识。这三个标准文件描述符是:

  • 0表示stdin
  • 1表示stdout
  • 2 for stderr

您要做的是将stderr重定向到stdout,然后将stdout重定向到文件。因此,在您的JAVARESULT变量中,您只需附加:

2>&1

您在这里说的是:将stderr(文件描述符2)重定向到stdout(文件描述符1)。

答案 1 :(得分:0)

试试这个:

echo“$ JAVARESULT”> $ LOG_FILE 2>& 1