Не зная специфики здесь: первая команда 'db2 connect to $ DB', вероятно, завершает работу и устанавливает соединение. Как только он закончил, он также закрыл его.
Звучит так, будто вам нужна конструкция, подобная этой:
var=$(db2 -x "connect to $DB;$query" | tr -d " ")
IOW: запустите команду db2 и дайте ему сначала выполнить «connect to $ DB» (оболочка заменит вам $ DB), а затем «$ query» (снова оболочка сделала замену.)
Я не уверен, какой разделитель хочет использовать db2, поэтому ';' было предположение.