Saída interrompida ao anexar saída da consulta sql em ksh

1

Sou muito novo em scripts. Eu gostaria de adicionar a saída da função sql dada abaixo para outra variável, por exemplo:

month_end ()
{
mdate=$($SQLPLUS_HOME/sqlplus.exe -S $DBC  << END
set pagesize 0 feedback off verify off heading off echo off;
select to_char(last_day(add_months(sysdate,-1)),'yyyymmdd') from dual;
exit;
END
)
}

quando faço eco da saída do $ mdate é perfeito. (20160531)

Mas quando eu adiciono a outra varable, todo o valor é quebrado (_WORLD.txt em vez de Hello_20160531_WORLD.txt).

FILENAME=Hello
EXTENSION=WORLD.txt
NAME=$FILENAME_${mdate}_${EXTENSION}

echo ${NAME}
    
por Rachel 06.06.2016 / 13:14

1 resposta

1

Isso é porque o sublinhado _ é uma parte válida de um nome de variável, então você também precisa das chaves ao redor de FILENAME :

NAME=${FILENAME}_${mdate}_${EXTENSION}

Com base em sua outra resposta, parece que você também tem um retorno de carro ( \r ) na linha de atribuição FILENAME ou na saída de sqlplus, em $mdate . Descubra o que executando cat -v no seu script de shell e / ou fazendo echo $mdate | cat -v . Desde que eu notei o sqlplus. exe , eu suponho que você esteja rodando em um ambiente similar ao Cygwin, que pode estar adicionando o retorno de carro. Corrija-o adicionando mdate=${mdate//^M/} onde você digita ^ M digitando control-v, control-m.

    
por 06.06.2016 / 13:25