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

Scripts works perfect when i run it manually, but on crontab something is wrong

我是编写 Unix shell 脚本的新手。我编写了一个包含 Oracle 数据库 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

你有

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

之后

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

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