重定向 java 和 javac 输出

Redirecting java and javac output

我正在尝试编写一个安装 (bash) 脚本,我需要在其中检查用户是否安装了 java 1.8。

最明显的方法是调用

javac -version | grep 1.8

,但由于某些奇怪的原因 javac(和 java)-版本输出无法重定向 - 既不能通过 |、> 或 >> - 在第一种情况下,第二种情况程序没有获得任何输入,在第二个和第三个中,执行命令后输出文件为空。 我试过在三台不同的机器上检查它,结果在每台机器上都是一样的。

这是什么原因? 有没有其他方法可以检查 java 版本?

看来输出已发送到 STDERR。试试这个:

javac -version 2>&1

这会将 STDERR 的输出重定向到 STDOUT。现在您应该可以通过管道传输命令了。

如果您只想将其重定向到一个文件,只需将 &1 替换为文件名即可,因此:

javac -version 2>out

您可以使用此工具简单地检查您的 java 版本: http://www.java.com/en/download/installed.jsp