【问题标题】:zsh: parse error: condition expected: "$1"zsh:解析错误:预期条件:“$1”
【发布时间】:2013-01-21 11:43:55
【问题描述】:

我尝试编写一个脚本来使用 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
}

欢迎提供链接和评论。提前致谢

【问题讨论】:

    标签: zsh


    【解决方案1】:

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

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

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

    顺便说一句,看起来第二次比较也将失败,因为双方右括号前缺少空间:

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

    【讨论】:

    • 为什么这不起作用(一个括号,一个等于):if ( $# = 0); thenif [ $# = 0]; then。它抱怨:condition expected: =
    【解决方案2】:

    你所有的反引号命令看起来都是错误的。您想运行命令,而不是将它们的 输出 解释为要运行的命令,对吗?如果是这样,请从 javac 调用中删除所有反引号。

    然后在[[ "$1" =="-d" ]] 中缺少一个空格,以使== 成为一个单独的令牌(另一个由 leroyse 指出)。

    【讨论】:

      猜你喜欢
      • 2022-06-30
      • 1970-01-01
      • 2021-01-02
      • 2021-03-25
      • 2019-08-21
      • 1970-01-01
      • 2017-06-10
      • 2012-07-19
      • 1970-01-01
      相关资源
      最近更新 更多