porque um script bteq funciona, mas não o outro

0

Abaixo estão dois códigos semelhantes, porque o primeiro está trabalhando, mas não o segundo, por favor? Alguém pode explicar o uso de chaves após os parênteses?

$ vi varoutput.bt
query_td () {
bteq << EOBTQ |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;
EOBTQ
}
var=$(query_td)
echo $var

$ ksh varoutput.bt
2017/05/14
$ vi testoutput4.bt
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

$ ksh testoutput4.bt
 *** Failure 5628 Column > not found in rldmprod_v.t.
            Statement# 1, Info =0
    
por user231340 14.05.2017 / 16:55

1 resposta

1

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
    
por 15.05.2017 / 10:28