【发布时间】:2018-07-04 08:05:27
【问题描述】:
我是 unix 命令的新手。我想执行 jasper 文件 P70152R1 并将 busDt 参数传递给该文件。 当前遇到此错误 >>> 第 51 行:第 53 行的语法错误:`newline' unexpected
谁能帮我检查一下我的shell脚本。
下面是我的脚本:
echo "*********************************************************"
echo "* xxxxxxxxxxxxxxxxxxxxxxxxx *"
echo "*********************************************************"
echo
echo "*********************************************************************************"
echo "* xxxxxxxxxxxxxxxxxxxxxxxx *"
echo "* UP *"
echo "* P700152R1 - AAAAAAAAAAAAAAAAAAA REPORT *"
echo "* P700152R2 - BBBBBBBBBBBBBBBBBBB REPORT *"
echo "* P700152R3 - CCCCCCCCCCCCCCCCCCC REPORT *"
echo "* (JP700152) *"
echo "* FREQUENCY : DAILY *"
echo ****************************************************************************"
echo
cd $MAIN/CWJCL/ACQ
export JCL=$MAIN/CWJCL/ACQ
export PRM=$MAIN/CWPRM/ACQ:$MAIN/CWPRM/CMN
export JAS=$MAIN/CWRPT/ACQ
export rptDir=$MAIN/ACQ/DAILYRPT
export LOG=$MAIN/CWLOG/ACQ
echo "Start Time and Date : \c" &&date
echo
JP70152=`date +%Y%m%d%H%M%S`
$JCL/strtJob $JP70152 JP70152
# Classpath
. $JCL/SETENV
#export CLASSPATH=$CLASSPATH:$PRM:$LIB/acq-1.0.jar
export CLASSPATH=$CLASSPATH:$PRM:"$MAIN/CWLIB/classes/acq"
# Get Business Date
echo "set heading off;" > $LOG/busDtSel.sql
echo "spool $LOG/date.log;" >> $LOG/busDtSel.sql
echo "ALTER SESSION SET CURRENT_SCHEMA=CCPS;" >> $LOG/busDtSel.sql
echo "SELECT 'CURRENT-BUSS-DATE:'||F9_AP008_BUS_DT FROM AP008;" >> $LOG/busDtSel.sql
echo "spool off;" >> $LOG/busDtSel.sql
echo "EXIT;" >> $LOG/busDtSel.sql
echo
$JCL/CONNAM.sh $LOG/busDtSel.sql $LOG/sel_day
a=$?
if [ ! $a -eq 0 ]
then
return $a
fi
tmpDt=`grep CURRENT-BUSS-DATE $LOG/date.log`
busDt=${tmpDt##*:}
# run program.
yyyymmdd=`date +%Y%m%d`
$JAVA_HOME/bin/java my.com.eprotea.report.JRGenerator -Ttxt -J$JAS/P70152R1.jasper -DACQ -O$rptDir/P70152R1.rpt -P<BUS-DATE:$busDt>
##########$JAVA_HOME/bin/java my.com.eprotea.report.JRGenerator -Ttxt -J$JAS/P70152R2.jasper -DACQ -O$rptDir/P70152R2.rpt -P<BUS-DATE:$busDt>
##########$JAVA_HOME/bin/java my.com.eprotea.report.JRGenerator -Ttxt -J$JAS/P70152R3.jasper -DACQ -O$rptDir/P70152R3.rpt -P<BUS-DATE:$busDt>
a=$?
echo $a
if [ ! $a -eq 0 ]
then
return $a
fi
echo
echo
echo
$JCL/endJob $JP70152 JP70152
echo "End Time and Date : \c" &&date
echo
return $a
非常感谢您的帮助。谢谢提前!
【问题讨论】:
-
如果这是一个 bash 脚本,那么行尾的
>可能会将其丢弃。也许您必须通过替换-P<BUS-DATE:$busDt>来编辑脚本? -
这会有所帮助:shellcheck.net
-
嗨@RolandWeber。它奏效了。非常感谢您的帮助!
-
由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。
标签: linux bash shell unix sqlplus