Linux 从bash脚本变量将stderr和stdout回显到文件

Linux 从bash脚本变量将stderr和stdout回显到文件,linux,bash,stdout,stderr,Linux,Bash,Stdout,Stderr,我有一个bash脚本,在这个bash脚本中有一个JAVARESULT变量,如下所示: JAVARESULT=`java -cp ... parser_file $file $someextravar` 我想在日志文件中捕获这个结果变量的stderr和stdout echo "$JAVARESULT" > $LOG_FILE 但我只得到标准,没有标准。我试过: echo "$JAVARESULT" &> $LOG_FILE 但是我没有在日志文件中找到java错误。试试这个

我有一个bash脚本,在这个bash脚本中有一个JAVARESULT变量,如下所示:

JAVARESULT=`java -cp ... parser_file $file $someextravar`
我想在日志文件中捕获这个结果变量的stderr和stdout

echo "$JAVARESULT" > $LOG_FILE
但我只得到标准,没有标准。我试过:

echo "$JAVARESULT" &> $LOG_FILE
但是我没有在日志文件中找到java错误。

试试这个:


echo“$JAVARESULT”>$LOG_FILE 2>&1在每个基于Unix的系统中,每个进程至少打开三个文件描述符。如您所知,文件描述符由数字标识。这三个标准文件描述符是:

  • 0表示
    stdin
  • 1表示标准输出
  • 2用于
    stderr
您要做的是将
stderr
重定向到
stdout
,然后将
stdout
重定向到一个文件。因此,在
JAVARESULT
变量中,您只需附加:

2>&1

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

java-cp。。。解析器文件$file$someextravar&>$LOG\u文件
?问题是
JAVARESULT
首先不包含标准错误。即使有,参数也不会存储关于哪些部分来自标准输出,哪些部分来自标准错误的信息:它只是一个大字符串。