У меня есть сценарий оболочки (.ksh), внутри которого я вызываю файл BTEQ для выполнения SQL-запроса. Тем не менее, дата выполнения файла BTEQ зависит от доступности данных, которую проверяет другой SQL-запрос внутри сценария оболочки.Передача переменных из сценария оболочки в файл BTEQ
Что я хочу: Я хочу передать переменную «Дата» из сценария оболочки в файл BTEQ, чтобы выполняемый запрос учитывал эту «дату».
Shell Script и переменная внутри 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 строк кода, поэтому я не хочу выполнять запрос i nside сценарий оболочки.
EDITED
Что я хочу: Я хочу иметь переменную RUNDATE (содержащий значение DATE) и хотите использовать эту переменную в любом месте. Значение RUNDATE должно быть назначено при запуске сценария оболочки, в основном, оно должно быть прочитано только один раз и должно оставаться таким же во время пакетного процесса, то есть оно не должно меняться, даже если наступил процесс, новый день.
я могу читать +1 день в скрипт, используя
RUNDATE=`date +"%Y-%m-%d" -d "+1 day"`
Теперь я бегу два пакетных процессов run_data_check и run_batch внутри сценария оболочки, в которой я буду проходящей эту дату в файл BTQ , 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. Я отредактировал свой вопрос, чтобы более четко изложить мой пример использования. Можете ли вы посоветовать мне теперь, как мне следует продолжать. –