您好我想編寫一個shell腳本,它將返回已安裝的JRE版本。如何編寫shell腳本文件來實現上述功能。如何編寫shell腳本以獲得JRE版本
如果我寫Java的版本,那麼應用程序返回 「1.6.0_14」 的Java(TM)SE運行時環境(建立1.6.0_14-B08) 的HotSpot的Java(TM)服務器VM(建14.0-B16,混合模式)」。
但我想DONOT任何字符串。我想只有JRE版本。
感謝 蘇尼爾·庫馬爾Sahoo
您好我想編寫一個shell腳本,它將返回已安裝的JRE版本。如何編寫shell腳本文件來實現上述功能。如何編寫shell腳本以獲得JRE版本
如果我寫Java的版本,那麼應用程序返回 「1.6.0_14」 的Java(TM)SE運行時環境(建立1.6.0_14-B08) 的HotSpot的Java(TM)服務器VM(建14.0-B16,混合模式)」。
但我想DONOT任何字符串。我想只有JRE版本。
感謝 蘇尼爾·庫馬爾Sahoo
如果你只想版本(而不是整個字符串),你可以這樣做像:
- 另存爲(比方說)javaversion.sh
#!/bin/sh
# Changed code to remove the 'head -1' as per the suggestion in comment.
JAVA_VERSION=`java -version 2>&1 |awk 'NR==1{ gsub(/"/,""); print $3 }'`
# export JAVA_VERSION
echo $JAVA_VERSION
這給:
$ 1.6.0_15
在我的系統上(該死的,甚至更過時! :-))
我發現'2> & 1'在我的系統中是必需的,因爲輸出似乎是'stderr'而不是'stdout'。 (2> & 1 =將標準錯誤的輸出發送到標準輸出流;在這種情況下,我們可以繼續處理頭部等)。
awk中的'gsub'位有必要刪除字符串中的雙引號。 (全球SUBSTitue),$ 3是第三個字段(awk默認其字段分隔符爲空格)。
「反引號」(`)被用來捕獲輸出 - 然後我們將它存儲在一個變量中。
[使用 '一刀切',而不是 '的awk' 可能是更優雅在這裏 - 見GrzegorzOledzki的帖子。]
#!/bin/sh
java -version
看看的
輸出java -version
可以使用java
命令,與-version
開關獲取安裝的JRE版本:
$ java -version
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)
跟在後面monojohnny的答案的想法,但使用的cut
代替awk
:
java -version 2>&1 | head -n 1 | cut -d\" -f 2
或者:
編寫一個訪問系統屬性「java.version」的Java類:它將刪除其他一些格式化垃圾,並允許您輸出到標準輸出而不是標準錯誤。
只是你的shell腳本中調用它與一個
java -cp <classpath> GetJavaVersion.class
只是使用shell
$ a=$(java -version 2>&1 >/dev/null)
$ set -- $a
$ echo $3
"1.6.0_0"
失去了頭並使用awk:Java的版本2>&1 | awk的「NR == 1 {gsub(/「/,」「); print $ 3}' – ghostdog74 2009-12-09 14:38:53
@monojohnny是否可以在不執行腳本的情況下將其從shell的屏幕上打印出來? – Michael 2011-12-04 11:30:06
@Michael你的意思不僅僅是使用」java -version「? – kevingreen 2012-12-13 15:23:40