当我手动运行脚本时,脚本工作得很好,但在crontab上出现问题

时间:2015-02-09 20:54:34

标签: sql oracle bash shell crontab

我是编写Unix shell脚本的新手。我编写了一个包含Oracle Database sql代码的脚本。如下所示,它会在文本文件上写出不完整的sql代码,我希望通过邮件发送这些输出。 我手动运行时效果很好。但是当在crontab上时,它并不像我想的那样做。 Sql代码工作得很好,文本文件更新,它发送邮件但邮件中的值是空白的。 我读了一些其他的问题,我写了所有的路径,但我找不到问题。我希望你能找到解决方案。 谢谢,最好的问候

#!/usr/bin/ksh
./home/partner/.profile
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9
ORACLE_BASE=/oracle
ORACLE_SID=----------------
ORACLE_HOME=-------------
USER=------------
PASSWD=--------------
SCRIPTPATH=/home/path-to/scripts/
spoolfile=$SCRIPTPATH/textfile1.txt
spoolfile2=$SCRIPTPATH/textfile2.txt
export NLS_LANG ORACLE_BASE ORACLE_SID  ORACLE_HOME

$ORACLE_HOME/bin/sqlplus $USER/$PASSWD<<EOF
@$SCRIPTPATH/code1.sql $spoolfile
exit;
EOF

$ORACLE_HOME/bin/sqlplus $USER/$PASSWD<<EOF
@$SCRIPTPATH/code2.sql $spoolfile2
exit;
EOF

value1=`/usr/bin/cat textfile1.txt`
value2=`/usr/bin/cat textfile2.txt`

if [[ -s $spoolfile ]] ; then
echo "mail1 "$value1 "text "$value2 | mailx -s "subject" mymail@abc.com
else
echo "mail2" | mailx -s "subject" mymail@abc.com 
fi

1 个答案:

答案 0 :(得分:3)

你有

spoolfile=$SCRIPTPATH/textfile1.txt
spoolfile2=$SCRIPTPATH/textfile2.txt

然后再

value1=`/usr/bin/cat textfile1.txt`
value2=`/usr/bin/cat textfile2.txt`

看起来文本文件保存在一个地方并从另一个地方读取。