Saída db2 confusa

1

Quando digito echo $(db2 -x "select count(*) from dict_area") no bash, recebo 446 .

Mas quando eu digito echo $(db2 -x "select count(*) from dict_area";db2 -x "select count(*) from dict_area") , obtenho

SQL1024N A database connection does not exist. SQLSTATE=08003 SQL1024N A database connection does not exist. SQLSTATE=08003

Isso não tem nada a ver com o meu trabalho. Eu só quero saber como isso acontece. Você pode me ajudar?

    
por dahui 05.12.2014 / 04:45

1 resposta

1

A execução em um $ () invoca um subshell, e o novo subshell não pode usar a conexão no shell atual. É por isso que você recebe esses erros.

Se você quiser executar algo em subshell, estabelece a conexão a cada vez. OU executá-los no atual, escrevendo a saída para um arquivo e, em seguida, processando a saída

echo $(db2 connect to sample > /dev/null; db2 -x "select count(*) from dict_area")

OR

db2 connect to sample
db2 -x "select count(*) from dict_area" > /tmp/output
echo $(cat output)
    
por 18.12.2014 / 16:33

Tags