如何在Bash中保持MySQL连接打开

Use*_*er1 7 mysql bash

我有一个bash脚本,可以多次调用MySQL.而不是必须重新连接到MySQL,有没有办法保持连接打开?理想情况下,如果脚本提前退出,则连接将关闭.我认为命名管道可以工作,但他们会保持开放.

这是我希望找到的一个快速伪示例:


openMySQL
executeMySQL "SELECT 1"
exit 1
executeMySQL "SELECT 2"
Run Code Online (Sandbox Code Playgroud)

我正在寻找MySQL连接实际关闭期间的函数openMySQLexecuteMySQL函数exit 1.

Use*_*er1 7

我有一些我正在寻找的东西.

使用fd = 3保持mysql连接打开以进行写入:


exec 3> >(mysql)
echo "SELECT 1;" >&3
echo "SELECT 2;" >&3
exec 3>&-

使用fd = 3保持mysql连接打开以进行读取:


exec 3< <(echo "SELECT 1;SELECT 2;"|mysql|sed '1d')
while read <&3
do
  echo $REPLY
done

注意:sed'1d'删除标题.

有没有办法合并这些,所以你可以写一个fd并从另一个读取?

  • > | mysql | sed'1d')不要这样做.使用`mysql -N` (3认同)

con*_*nny 5

据我所知,你的问题是:在zsh/ksh中可用的coproc以及bash v4 +可能与你的想法类似,例如

bash4-4.1$ coproc MYSQL mysql -B -uroot 
[1] 10603
bash4-4.1$ jobs
[1]+  Running                 coproc COPROC MYSQL mysql -B -uroot &
bash4-4.1$ echo 'show databases;' | MYSQL
Database
information_schema
...
Run Code Online (Sandbox Code Playgroud)

该命令保持在后台运行,其stdin/stdout可以被访问,一旦当前shell存在,它将完成(因此它的标准输入关闭/ EOF ing)...