1

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 <tellone.diloom@gmail.com>."

  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
}

リンクやコメントは大歓迎です。前もって感謝します

4

2 に答える 2

10

コードが引数$1に格納されている文字列を文字列-dと比較しようとしているようですが、二重等号の後にスペースがありません。

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

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

私はコードを試していませんが、それがそれを解決したかどうか私に知らせてみてください!

ところで、二重角かっこの前のスペースが不足しているため、2番目の比較も失敗するようです。

elif [[ "$1" == "-d" ]] || [[ "$1" == "--default"]]; then
                                                 ^
elif [[ "$1" == "-d" ]] || [[ "$1" == "--default" ]]; then
于 2013-02-06T10:16:14.743 に答える
1

バックティックされたコマンドはすべて間違って見えます。コマンドを実行したいのですが、出力を実行するコマンドとして解釈するのではありませんか?javacその場合は、呼び出しからすべてのバッククォートを削除します。

次に、別のトークン(およびleroyseによって指摘された別のトークン)[[ "$1" =="-d" ]]を作成するためのスペースが不足しています。==

于 2013-02-06T10:25:29.223 に答える