重定向 java 和 javac 输出

ine*_*xxt 1 java redirect pipe javac output

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

最明显的方法是调用

javac -version | grep 1.8
Run Code Online (Sandbox Code Playgroud)

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

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

Viv*_*ath 5

输出似乎发送到STDERR. 尝试这个:

javac -version 2>&1
Run Code Online (Sandbox Code Playgroud)

这会将输出重定向STDERRSTDOUT. 现在您应该能够通过管道传输命令。

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

javac -version 2>out
Run Code Online (Sandbox Code Playgroud)