2015-02-09 55 views
0

我是編寫Unix shell腳本的新手。我編寫了一個包含Oracle數據庫sql代碼的腳本。正如你在下面看到的,它會在文本文件中寫出大量的sql代碼,並且我想通過郵件發送這些輸出。 當我手動運行時,它工作得很好。但是當在crontab上它不會按照我的意願去做。 Sql代碼工作得很好,文本文件被更新,它發送郵件但郵件中的值爲空。 我讀了一些其他問題,我寫了所有的路徑,但我找不到問題。我希望你能找到解決辦法。 謝謝你,最好的問候當我手動運行腳本時腳本工作的很好,但是在crontab上出現了一些問題

#!/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" [email protected] 
else 
echo "mail2" | mailx -s "subject" [email protected] 
fi 
+0

你可以編輯你的crontab發送輸出到日誌查找'... >> log.txt'並上傳那個? – mmmmmpie 2015-02-09 20:58:34

+0

如果您作爲cron的用戶運行,它可能也是一個權限問題。 – MiltoxBeyond 2015-02-09 20:59:41

+0

執行crontab時,常見問題來自設置環境變量。確保在由crontab調用的腳本中設置環境變量。 – Cyryl1972 2015-02-11 10:20:01

回答

3

你有

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

再後來

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

貌似TEXTFILES被保存在一個地方,從另一個讀取。

+0

我只寫完整路徑,它的工作原理: – omega 2015-02-09 21:12:54

相關問題