我有一个shell脚本(.ksh),在其中我调用BTEQ文件来执行SQL查询。但是,执行BTEQ文件的日期取决于shell脚本中另一个SQL查询检查的数据可用性。从shell脚本传递变量到BTEQ文件
我想要什么:我想将'Date'变量从shell脚本传递到BTEQ文件中,以便执行的查询将'date'考虑在内。
Shell脚本和check_data.ksh内的可变
Rundate=`date +"%Y-%m-%d"`
cat ~/.tdlogon_simba sample_TD.btq | bteq >> ${log_file} 2>&1
BTEQ文件代码(Sample_TD.btq)
sel * from test_table
where cond = Rundate
在上面的代码中,我想 'Rundate' 来自check_data .ksh
我不想要的东西:实际上,我的查询在3000行左右的代码非常大,所以我不想执行查询在shell脚本旁边。
EDITED
我想要什么:我想有一个变量RUNDATE(含DATE值),并希望使用该变量的每一个地方。 RUNDATE的值应该在shell脚本的开始处分配,基本上它应该只读一次,并且应该在整个批处理过程中保持相同,即如果进程正在运行,即使新的一天到来也不应该改变。
我可以用
RUNDATE=`date +"%Y-%m-%d" -d "+1 day"`
现在读+1天shell脚本我运行两个批处理进程run_data_check和run_batch中,我会通过这个日期到BTQ文件中的shell脚本里面。 Data_check是一个迭代过程,我不知道数据何时到来。因此,我希望固定日期以检查当天的数据。
如果我使用
run_tdcheck
sed "s/RUNDATE/$(date +'%Y-%m-%d' -d '+1 day')/g" ~/.tdlogon_simba test.btq | bteq >> ${log_file} 2>&1
然后它不能帮助我的原因,因为每次该功能运行时,它考虑的系统日期和相应地修改。我想要修复RUNDATE直到批处理完成。
任何我可以解决这个问题的方法。
谢谢,@tripleee。我编辑了我的问题,更清楚地说明我的用例。你现在能告诉我我该怎么做。 –