zsh:解析错误:预期的条件:"$ 1"

Fil*_*lip 0 zsh

我试着写一个脚本用gentoos java-config编译java文件,但我最终得到一个错误zsh:解析错误:条件预期:"$ 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
}
Run Code Online (Sandbox Code Playgroud)

欢迎链接和评论.提前致谢

ler*_*yse 7

看起来你的代码试图将存储在参数$ 1中的字符串与字符串-d进行比较,但比较在双等号后面缺少一个空格:

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

elif [[ "$1" == "-d" ]] || [[ "$1" == "--default"]]; then
Run Code Online (Sandbox Code Playgroud)

我没有尝试过代码但是,请尝试让我知道它是否解决了!

顺便说一句,看起来第二次比较也会失败,因为双方括号前的空格不足:

elif [[ "$1" == "-d" ]] || [[ "$1" == "--default"]]; then
                                                 ^
elif [[ "$1" == "-d" ]] || [[ "$1" == "--default" ]]; then
Run Code Online (Sandbox Code Playgroud)