2016-04-03 153 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