Sou muito novo em scripts. Gostaria de adicionar a saída da função sql fornecida abaixo a 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, a saída de $ mdate é perfeita. (20160531)
Mas quando acrescento a outra variável, todo o valor é quebrado ( _WORLD.txt em vez de Hello_20160531_WORLD.txt).
FILENAME=Hello
EXTENSION=WORLD.txt
NAME=$FILENAME_${mdate}_${EXTENSION}
echo ${NAME}
Responder1
Isso ocorre porque o sublinhado _
é uma parte válida do nome de uma variável, então você também precisa das chaves ao redor FILENAME
:
NAME=${FILENAME}_${mdate}_${EXTENSION}
Com base na sua outra resposta, parece que você também tem um retorno de carro ( \r
) na linha de atribuição FILENAME ou na saída do sqlplus, em $mdate
. Descubra qual executando cat -v
em seu script de shell e/ou fazendo echo $mdate | cat -v
. Desde que acabei de notar o sqlplus.exe, presumo que você esteja executando em um ambiente semelhante ao Cygwin, que pode adicionar o retorno de carro. Corrija-o adicionando mdate=${mdate//^M/}
onde você insere ^M digitando control-v, control-m.