【发布时间】:2014-12-02 17:31:25
【问题描述】:
我正在尝试执行一个调用 Oracle 产品中的作业的 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
谢谢!
【问题讨论】:
-
为什么要将所有变量都放在环境中?您可能可以删除脚本中每次出现的“导出”一词,并且您应该了解这样做的含义。
-
另外,最后 6 行(分配 ReturnCode,然后使用它指定要退出的参数)是完全多余的。脚本将退出并返回最后执行的命令的返回值。 (如果您真的关心将所有非零值映射到 1,只需执行
test $? = 0,但您可能并不真正关心这一点。) -
好吧,第一个 if 语句没有完成,这个脚本将为所有作业触发,我正在尝试对其进行测试,看看它是否适用于此刻。我的 BatchKey 目前也是硬编码的。这将被删除,并且在运行此脚本时,将传递一个参数。