O terminador do final do bloco embutido ( EOF
no seu caso) deve ser a única string na linha. E o seu script deve ser reescrito desta maneira:
testabcd=$(bteq <<EOF |grep '^>' |sed -e "s/^>//"
.LOGON TDPROD/userid,pass;
select top 3 '>'||t.cal_dt from rldmprod_v.cal_dt t where t.cal_dt = current_date;
.LOGOFF;
.QUIT;
EOF
)
var=$testabcd
echo $var