我有一個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。我編輯了我的問題,更清楚地說明我的用例。你現在能告訴我我該怎麼做。 –