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版本?
输出似乎发送到STDERR
. 尝试这个:
javac -version 2>&1
Run Code Online (Sandbox Code Playgroud)
这会将输出重定向STDERR
到STDOUT
. 现在您应该能够通过管道传输命令。
如果您只想将其重定向到文件,只需替换&1
为文件名,因此:
javac -version 2>out
Run Code Online (Sandbox Code Playgroud)