2016-04-03 154 views
1

有人能告诉我为什么这个简单的命令找不到输出“java version”?从java -version检查Java是否安装了Bash

输出
if java -version | grep -q "java version" ; then 
    echo "Java installed." 
else 
    echo "Java NOT installed!" 
fi 

是如下

java version "1.8.0_77" 
Java(TM) SE Runtime Environment (build 1.8.0_77-b03) 
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode) 
+1

你没有实际检查输出或版本,所以是有一个原因,你不只是使用'which'? – dovetalk

+1

为什么grep的版本,当你可以检查二进制本身是否存在并且是可执行的? –

+0

二进制文件不在每台机器上的相同位置,不会对src进行测试。 – WASasquatch

回答

5

java输出到stderr。您可以使用

if java -version 2>&1 >/dev/null | grep -q "java version" ; then 

,但可能更简单的做这样的事情

if [ -n `which java` ]; then 
+0

我注意到'哪个'并不总是可用的测试这个软件在多个来自机器的机器去看看有什么可用的。为什么我在测试java命令。谢谢你的时间。 – WASasquatch