2016-06-28 74 views
-1

我試圖在bash腳本中獲取javac版本(專門用於apks操作和構建)。在BASH腳本中檢查Javac版本的正確方法

我找到了一種獲得java版本的方法,它可能類似但不一樣(它不適用於javac)。

P.S .:目前在OS X上工作,但也應該在Linux上工作。

編輯:PS:有些環境可能不具有的javac在PATH

謝謝!

+5

'javac'在'PATH'中時,'javac -version'似乎可以正常工作。你的具體問題是什麼? – Aaron

+1

如果您不在Q中包含它,我們無法幫助您修復代碼。祝您好運。 – shellter

回答

2

試試這個功能,它支持這兩種情況下,當javac的是或不是在PATH變量

showJavacVersion() 
{ 
    x="h" 
    { 
     x=$(type -p javac) 
    } >&- 
    if [ -n "$x" ]; then 
     _javac=javac 
    elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/javac" ]]; then 
     _javac="$JAVA_HOME/bin/javac" 
    fi 
    if [[ "$_javac" ]]; then 
     version=$("$_javac" -version 2>&1 | awk -F ' ' '/javac/ {print $2}') 
     echo $version 
    else 
     echo javac not found 
    fi 
} 

簡單地稱呼它吧

showJavacVersion 

希望它有幫助!

+0

JAVA_HOME事情做到了。發生這種情況是因爲我需要在沒有「安裝」但複製SDK的環境中運行它。 – DNax

0

如果PATHjavac

jc_ver="$(javac -version 2>&1| grep -o '[0-9_.]*$')" 
echo "$jc_ver" 

或者使用cut

jc_ver="$(javac -version 2>&1| cut -d ' ' -f2)" 
+0

同樣使用awk jc_ver = $(javac -version 2>&1 | awk -F'''/ javac/{print $ 2}') – gabocalero