如何用zpty控制mysql?

如何用zpty控制mysql?

我尝试为 mysql 控制台客户端编写一个包装脚本。在从事这项工作时,我偶然发现了 zpty。看起来很完美。

我的第一个目标是检索一些表内容,但我已经失败了。有一些非常奇怪的行为。

如果我运行 zsh 并输入自己的内容

$ zmodload zsh/zpty
$ zpty -b MYSQL mysql DATABASE-NAME
$ zpty -r MYSQL

一切都按预期进行并且

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 448
Server version: 5.5.54-0+deb8u1 (Debian)

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [DATABASE-NAME]> %

被打印。

如果我在 shellscript 中输入相同的代码

#!/bin/zsh
zmodload zsh/zpty
zpty -b MYSQL mysql DATABASE-NAME
zpty -r MYSQL

并执行它,什么也没有打印。

如果我删除 shellscript 中的 -b

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 449
Serv

被打印。然后脚本就冻结了。

总的来说,我注意到一些非常不连贯的行为。这是一个错误吗?我究竟做错了什么?

相关内容