将Bash脚本移植到Java

时间:2009-09-22 15:40:46

标签: java bash

我正在尝试使用Java中的Process或ProcessBuilder对象来模拟下面的bash shell脚本的功能。我不是100%清楚我如何进行标准输入的重定向。我怎么能做到这一点?

#
#  Redirect shell echo command from standard output to file
#  This will construct the input file
# 
exec 1> $STDIN
echo -e "$NFILE\n$GFILE\n$INPUT\n$OUTPUT\n$CAX"
exec 1>&-

#
#  Run executable redirecting standard in as the input file and output to a log file
#
"$EXE" < $STDIN >& $LOG

1 个答案:

答案 0 :(得分:2)

Process对象流被误导地命名。您需要写入Process对象的OutputStream

来自doc:

  

所有标准的io(即stdin,   stdout,stderr)运营将是   重定向到父进程   通过三个流   (Process.getOutputStream(),   Process.getInputStream()   Process.getErrorStream())。

您还必须同时使用过程输出和标准错误 ,否则缓冲区将填满并且过程将被阻止。有关详细信息,请参阅here