2014-12-02 92 views
0

我试图执行一个在Oracle产品中调用作业的ksh脚本。当我运行/执行我的剧本,我得到以下错误:文件意外结束 - ksh

$ sh test.sh 
: command not found 
: command not found 
: command not found 
: command not found 
test.sh: line 31: syntax error: unexpected end of file 
$ 

这里是我的代码 - 请告诉我什么,我做错了:

#!/usr/bin/ksh 
# 
# OEDQJobSubmit.sh 

export BatchKey="AVG" 

# Environment details: CURRENT 

export OEDQUser=user1 
export OEDQPass=password 
export OEDQPORT=8090 
export OEDQHOST=`hostname` 

if [ ${BatchKey} = "AVG" ]; then 
    export Job="Job-Averages" 
    export Project="IPVFB-AVG" 
fi 

cd /ora/mw_etl/Oracle_EDQ1/oracle.edq/ 
/ora/java/sunjdk/bin/java -jar jmxtools.jar runjob -job "${Job}" -project "${Project}" -u ${OEDQUser} -p ${OEDQPass} ${OEDQHOST}:${OEDQPORT} 

export ReturnCode=${?} 

if [ ${ReturnCode} == 0 ]; then 
    exit 0 
else 
    exit 1 
fi 

谢谢!

+0

你为什么要把所有的变量放在环境中?你可以在你的脚本中删除每个出现'export'的单词,并且你应该理解这样做的含义。 – 2014-12-02 17:40:00

+0

此外,最后6行(分配ReturnCode,然后使用它来指定参数退出)完全是多余的。该脚本将以执行的最后一个命令的返回值退出。 (如果你真的关心将所有非零值映射到1,只要'test $?= 0',但你可能实际上并不关心这个。) – 2014-12-02 17:41:56

+0

那么,第一个if语句没有完成,这个脚本将触发所有工作,我正在尝试测试它,看看它是否适用于此刻。另外我的BatchKey目前是硬编码的。这将被删除,并且在运行此脚本时,会传递一个参数。 – AJR 2014-12-02 17:54:44

回答

1

你是做了一个错误,要调用ksh脚本sh =)

2解决方案:

  • chmod +x test.sh; ./test.sh

  • ksh test.sh
+0

如果我使用的ksh test.sh我得到以下几点: $ KSH test.sh :找不到[没有这样的文件或目录] :找不到[没有这样的文件或目录] :找不到[没有这样的文件或目录] :找不到[没有这样的文件或目录] test.sh:第14行:语法错误第31行:'如果'不匹配 – AJR 2014-12-02 17:40:42

+0

如果我使用chmod + x test.sh; ./test.sh .....我得到以下内容: $ chmod + x test.sh; ./test.sh -ksh:./test.sh:找不到[没有这样的文件或目录] – AJR 2014-12-02 17:43:58

+0

所以它看起来像复制和过去不起作用。我基本上在Linux服务器上的vi编辑器中重写了我的整个程序,并使用ksh test.sh运行它。有用。多谢你们。 我之前做过的事情是在Notepad ++中编写程序,并将其复制到Linux。请注意,不要这样做 – AJR 2014-12-02 20:03:29

1

您的文件包含回车符。

通过dos2unixtr -d '\r'运行脚本。