スクリプトは$ proc_dateを解析できません。

スクリプトは$ proc_dateを解析できません。

複数のHQLがあります。以下はその例です。

うそ:/home/ganesh/CopyJobs/hql/

insert into XYZ.exttbl_form_data PARTITION (load_date="$proc_date") select FORM_DATA_ID,FORM_ID,USER_ID,INTERACTIONS_ID,SUBMISSION_DATETIME,FILEDS from PQR.exttbl_form_data where load_date="$proc_date" 

メインスクリプトでは、上記のHQLを次のように読みました。

export proc_date=2018-05-07

while read line
do
export hql=`cat /home/ganesh/CopyJobs/hql/$table_name.hql`

export hql_final=$(`eval echo"$hql"`)
echo "Final HQL: $hql_final"
hive -e "$hql_final;"

done < /home/ganesh/CopyJobs/config/tables.txt 

Tables.txtにはすべてのHQLのリストが含まれています。

$proc_dateを解決したいのですが、問題は発生しません。

答え1

eval echo"$hql"$()が良い選択かどうかわかりません。

  • echoとの間にスペースを追加します。"$hql"
  • ここには代替項目が4つ以上あるので、3行を使用します。

hqlたとえば、テンプレートファイルを次のように置き換えload_date="$proc_date"ます。LOAD_DATA_TMPL

その後、ループ内で

hql_final=$(sed s:LOAD_DATA_TMPL:load_date="$proc_date":g /home/ganesh/...)
echo "Final HQL: $hql_final"
hive -e "$hql_final;"
  • 中にスペースがないことを確認してください。$proc_date

関連情報