在这个脚本中,我试图将SQL查询的结果转换为变量计数,我稍后会比较它以确定是否发送电子邮件。
执行脚本时,出现integer expression expected
错误。
这是我的剧本。
LOGFILE=/home/ni916c/${SCRIPT}.$RUN_DATE.log
RPTNAME=/home/ni916c/ASPEN_LOADER_error.xls
#rm $LOGFILE
count=$(sqlplus -S ni916c/rajabeta17 <<-EOF
set heading off
SET FEEDBACK OFF
SELECT 'Loader File Failed:: '||to_char(load_id) ||' '|| to_char(file_id) ||' '||file_name||' '||to_char(load_status_id) FROM DL_FILES_RECEIVED
WHERE
period_id = to_number(to_char(sysdate,'yyyymm'))
and load_status_id=300;
-- in (select load_status_id from DL_LOAD_STATUS where category like '%ERROR%');
exit;
EOF
)
echo "$count" >> $LOGFILE
if [ "$count" -ne 0 ]
then
mailx -s "LOADER ERROR" rk862h@att.com < $LOGFILE
fi
答案 0 :(得分:0)
我认为错误来自两个来源之一:
if [ "$count" -ne 0 ]
失败,因为您的语句不返回整数。如果问题是上面的(2),您可能必须在脚本中添加某种错误处理以检测意外结果。例如:
if
[[ "$count" =~ ^[0-9]+$ ]]
then
# Ok, we have an integer
else
# Oops, something went wrong
fi
您还应该确保SQL语句没有返回导致count
变量不被识别为整数的其他字符,在这种情况下可能需要进行一些修剪。