在cronjob中未分配的变量值

时间:2017-05-19 11:01:06

标签: sql linux bash crontab

我有一个代码,当手动执行时(通过此命令,即./script.sh)将查询结果分配给变量,但是当它通过crontab自动执行时,查询结果不会分配给变量。

请在下面找到代码:

 if (!obj[k].hasOwnProperty('children') || obj[k].children.length <= 0) continue;
 var ret = getUrl(pairUrl, currentLng, enMenu[k].children, deMenu[k].children, obj[k].children);
 if(typeof ret != 'undefined') return ret;

2 个答案:

答案 0 :(得分:0)

通常会发生这种情况,因为您的cron不知道您在.profile中初始化的变量。当您通过cron运行此脚本时,甚至sqlplus的路径也不可用。因此,要解决此问题,请以下面的格式设置cron作业,它将正常工作。

    00 * * * * . ~/.profile && /home/absolut_path_to_script.sh > /home/log_file_path.txt

答案 1 :(得分:0)

我已经完成了,因为cron不知道SQLPlus的路径,因此只要路径被赋予cron作业响应完全就不会执行查询

以下是解决方案:

ORACLE_HOME = / ORACLE /应用程序/ ORACLE /产品/ 11.2.0 / DB_1 导出ORACLE_HOME

dateToday = date +%Y%m%d%H%M%S

DIFF = 0;

timeRightNow =&#39; 20170519180000&#39; timeoffile =&#39; 20170519175500&#39;

DIFF = $ORACLE_HOME/bin/sqlplus -s user/paswd@leadb2 << END set pagesize 0 feedback off verify off heading off echo off; SELECT (to_Date($timeRightNow,'YYYYMMDDHH24MISS') - to_date($timeoffile,'YYYYMMDDHH24MISS') ) * 24 * 60 difference_in_minutes from dual; END

echo&#34;差异是$ diff&#34;&gt;&gt; /backup2/softdev/settlement/p.txt