当在 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)