令人困惑的 db2 输出

令人困惑的 db2 输出

当在 bash 中输入时echo $(db2 -x "select count(*) from dict_area"),我得到446.

但是当我输入时echo $(db2 -x "select count(*) from dict_area";db2 -x "select count(*) from dict_area"),我得到

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

这与我的工作无关。我只是想知道这是怎么发生的。你能帮助我吗?

答案1

$() 中的执行会调用子 shell,新的子 shell 无法使用当前 shell 中的连接。这就是您收到这些错误的原因。

如果你想在子shell中执行东西,每次都建立连接。或者通过将输出写入文件然后处理输出来在当前文件中执行它们

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

或者

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

相关内容