我正在使用一个bash脚本,该脚本当前正在服务器(RHEL4)上工作。我正在用Ubuntu10.04开发我的笔记本电脑,但我不认为是这个平台造成了这个问题。
下面是发生的事情:
我有一个框架脚本,它调用另一个脚本来完成大部分工作。但是,它经常调用getConfig.sh。getConfig.sh基本上只是解析一些命令行参数(使用getopts)并调用Java程序来解析一些XML文件。无论如何,getConfig.sh会抛出很多错误(但似乎仍然有效)。
这是我得到的信息
getconfig.sh:89:[[:未找到
getconfig.sh:89:[[:未找到
getconfig.sh:94:[[:未找到
每次运行时,我都会遇到这三个错误;但是,脚本完成,Java代码运行。
这是相关代码部分
解析选项$*
如果[[“${debugMode}”=“true”]];则
DEBUG=“-DDEBUG=true”
echo“${JAVA_HOME}/bin/JAVA${DEBUG}-Djava.endorded.dirs=${JAXP_HOME}-jar$(dirname$0)/GetXPath.jar${XML_File}${XPath_Query}”
fi公司
第89行是“parseOptions$*,第94行是“fi”
谢谢你的回答。

最佳答案

如果您的脚本是可执行的,并且您正在像./getconfig.sh那样执行它,则脚本的第一行必须是:

#!/bin/bash

如果没有shebang行,您的脚本将被sh解释,它在[[语句中不理解if
否则,您应该像bash getconfig.sh,而不是sh getconfig.sh那样运行脚本。即使您的默认shell是bash,使用sh运行的脚本也将使用一组减少的bash特性,以便更符合POSIX标准。[[是禁用的功能之一。

10-04 19:22