我试图用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
}欢迎链接和评论。提前感谢
发布于 2013-02-06 18:16:15
看起来您的代码试图将存储在参数$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发布于 2013-02-06 18:25:29
所有带反引号的命令看起来都是错误的。您希望运行命令,而不是将其输出解释为要运行的命令,对吗?如果是这样,请删除javac调用中的所有反引号。
然后,[[ "$1" =="-d" ]]中缺少一个空格来使==成为一个单独的令牌(正如leroyse指出的那样,还有一个令牌)。
https://stackoverflow.com/questions/14726319
复制相似问题