2013-02-06 74 views
0

我試圖編寫一個腳本來編譯帶有gentoos java-config的java文件,但我最終得到了一個錯誤 zsh:parse error:condition expected:「$ 1」告訴我這是什麼意思,爲什麼它會在函數中的第16行報告。

function jComp() { 

local java_mods = "" 

if (($# == 0)); then 
    echo "using javac on .java in folder" 
    `javac *.java` 
    return 0 

elif [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then 
    echo "Usage: jComp [java modules] [file]" 
    echo 
    echo "Options:" 
    echo " -h, This help message." 
    echo "modules has to be in the (java-config -l) list" 
    echo 
    echo "Report bugs to <[email protected]>." 

    return 0 
fi 

if [[ "$(java-config -v)" == "" ]]; then 
    echo "This script depends on java-config" 
    return 1 
elif [[ "$1" =="-d" ]] || [[ "$1" == "--default"]]; then 
`javac -cp .:$(java-config -p junit-4) *.java` 
    if [[ $# == 2 ]]; then 
    `javac -c .:$(java-config -p junit-4) "$2"` 
    return 0 
    fi 
fi 


while (($# > 1)); do 
if [[ ! -f "$1" ]]; then 
    java_mods="$java_mods $1" 
    shift 
    continue 
fi 
done 

`javac -cp .:$(java-config $java_mods)` 

return 0 
} 

歡迎鏈接和評論。在此先感謝

回答

6

它看起來像你的代碼試圖將存儲在參數$ 1到字符串-d一個字符串,但比較是雙等號後缺少空間:

elif [[ "$1" =="-d" ]] || [[ "$1" == "--default"]]; then 
      ^

elif [[ "$1" == "-d" ]] || [[ "$1" == "--default"]]; then 

我的天堂」 t嘗試了代碼,但是,請嘗試讓我知道它是否解決了它!

順便說一句,它也像第二比較也將失敗,因爲雙方括號結束之前缺乏空間:

elif [[ "$1" == "-d" ]] || [[ "$1" == "--default"]]; then 
               ^
elif [[ "$1" == "-d" ]] || [[ "$1" == "--default" ]]; then 
0

你所有的backticked命令看起來是錯誤的。你想運行這些命令,而不是將它們的輸出作爲一個命令來運行,對吧?如果是這樣,請從javac調用中刪除所有反引號。

然後在[[ "$1" =="-d" ]]中有一個缺失空間,使==成爲一個單獨的標記(另一個由leroyse指出)。

相關問題